Если у Вас есть конечный список возможных случайных чисел (т.е. 1 - 100), то решение Кента хорошо.
Иначе нет никакого другого хорошего способа сделать это без цикличного выполнения. Проблема - Вы, ДОЛЖЕН сделать цикл, если Вы получаете дубликат. Мое решение должно быть эффективным, и цикличное выполнение не должно быть еще много, чем размер Вашего массива (т.е. если Вы хотите 20 уникальных случайных чисел, могло бы потребоваться 25 повторений в среднем.), Хотя количество повторений ухудшается больше чисел, Вам нужно, и меньшее макс. Вот мой выше кода, измененного для показа, сколько повторений необходимо для данного входа:
require 'set'
def rand_n(n, max)
randoms = Set.new
i = 0
loop do
randoms << rand(max)
break if randoms.size > n
i += 1
end
puts "Took #{i} iterations for #{n} random numbers to a max of #{max}"
return randoms.to_a
end
я мог записать этот код для ВЗГЛЯДА больше как Array.map, если Вы хотите:)
Здесь есть несколько старых инструкций и здесь . Возможно, вам придется настроить их для своих нужд.
GTK также имеет несколько списков рассылки , к которым вы можете присоединиться, чтобы обсудить это. Лучшие списки для этого конкретного вопроса: gtk-app-devel-list@gnome.org или gtk-list@gnome.org.
На irc.gnome.org также есть канал irc, # gtk +. По моему опыту, вы получаете либо быстрые ответы, либо их нет вообще.
Если можете, вы можете попробовать переключиться с Visual C ++ на mingw, систему сборки для Windows, подобную Unix / Linux. Очень немногие разработчики GTK используют его в Windows, и почти все они используют mingw.
Для любого типа библиотеки, сначала вам нужно убедиться, что у вас есть доступные файлы библиотеки и связанные заголовки. После того, как они у вас есть, вы просто изменяете свойства своих проектов в каталогах C ++> General> Additional Include, чтобы указать путь к заголовкам, и в Linker> General> Additional Library Dependencies, чтобы содержать путь к вашим файлам lib. Затем в Linker> Input> Additional Dependencies вы добавляете имя файла (а не полный путь) необходимых вам LIB-файлов.
сначала вам нужно убедиться, что у вас есть доступные файлы библиотеки и связанные заголовки. После того, как они у вас есть, вы просто изменяете свойства своих проектов в каталогах C ++> General> Additional Include, чтобы указать путь к заголовкам, и в Linker> General> Additional Library Dependencies, чтобы содержать путь к вашим файлам lib. Затем в Linker> Input> Additional Dependencies вы добавляете имя файла (а не полный путь) нужных вам файлов .lib. сначала вам нужно убедиться, что у вас есть доступные файлы библиотеки и связанные заголовки. После того, как они у вас есть, вы просто изменяете свойства своих проектов в каталогах C ++> General> Additional Include, чтобы они содержали путь к заголовкам, и в Linker> General> Additional Library Dependencies, чтобы содержать путь к вашим файлам lib. Затем в Linker> Input> Additional Dependencies вы добавляете имя файла (а не полный путь) нужных вам файлов .lib.