Спасибо, за такую хорошую дискуссию.
Я сделал следующее:
1) Я создал статическую библиотеку, используя опцию cocaotouch static lib. В этом у меня есть c / c ++ / obj-c все смешать. тем не менее, мой экспорт только классы obj-c. Фактически я использовал objc- to C ++.
2) Затем я создал приложение для iphone в программе X-code. Я добавил другие ссылки, помечающие мое имя библиотеки (-lxyz) // мое имя библиотеки - libxyz.a Я добавил путь поиска lib, путь поиска заголовка
3), а затем скомпилировал. Я получил ошибки. оператор operator новый, оператор delete not found.
3) затем, кроме моего appdelegate, контроллера представления, я добавил фиктивную cpp (.h, .cpp) ... atestdummy.h atestdummy.cpp
4), а затем снова собрал ...
Вот это сработало.
Итак, все предложения, которые они давали ранее, работали на меня. основная причина, если ваше приложение не увидит .cpp файл .mm файл с кодом cpp, ссылка не будет использовать g ++.
Спасибо всем. Я прочитал выше и решил свою проблему.
Ребята, вы можете поделиться.
$rnd1 = rand(0,9);
do {
$rnd2 = rand(0,9);
} while ($rnd1 == $rnd2);
$r = str_shuffle("0123456789");
$r1 = (int) $r[0];
$r2 = (int) $r[1];
$random1 = (rand() % 10)
$random2 = $random1 + (rand()%9)+1
Таким образом, они никогда не равны (так как к $ random1 будет добавлено как минимум 1)
если оба числа должны быть от 0 до 9, вам просто нужно сделать это с помощью последняя операция модификации:
$random1 = (rand() % 10)
$random2 = ($random1 + (rand()%9)+1 ) %10
$numbers = array_rand(range(0, 9), 2);
echo '<pre>';
print_r($numbers);
echo '</pre>';
Думаю, вы обнаружите, что rand ()% 9
даст вам число в диапазоне от 0 до 8 включительно. Если вы хотите от 0 до 9 включительно, вы должны использовать rand ()% 10
. Я собираюсь предположить, что это то, что вы хотели, но вы могли бы легко изменить ответ, если бы от 0 до 8 были тем, что вы на самом деле предполагали.
Если вам нужны два числа в этом диапазоне, самый простой способ - сгенерировать один в этом диапазоне, затем сгенерировать другой в диапазоне, меньшем, чем этот диапазон, и, если он идентичен или больше, увеличить его.
Это математический способ сделать это, и он детерминирован ( всегда два вызова в rand ()
несмотря ни на что). Хотя маловероятно, истинный генератор случайных чисел мог бы произвести строку чисел, все идентичных, что сделало бы решения цикла неразумными (вы, вероятно, будете использовать линейный генератор, так что это, вероятно, не будет проблемой).
С первой попытки, у вас есть полный диапазон на выбор (10 цифр, от 0 до 9). На втором у вас есть полный диапазон минус уже выбранное число. Итак, если ваше первое число было 7, вы генерируете число от 0 до 8 и сопоставляете 7 с 8 и 8 с 9:
$random1 = (rand() % 10);
$random2 = (rand() % 9);
if $random2 >= $random1 {
$random2 = $random2 + 1;
}
function random($min, $max) {
$stack = range($min, $max);
shuffle($stack);
$nr1 = array_pop($stack);
$nr2 = array_pop($stack);
return array($nr1, $nr2);
}
Это могло бы помочь, не будучи математиком :)
Если вам просто нужно уникальных чисел , просто начните с нуля и добавьте +1 для каждого нового числа.
Если вам нужны случайные уникальные числа , просто сохраните свои предыдущие номера в списке, и когда вам понадобится новый,
$random1 = rand() % 9;
$random2 = ($random1 + 1) % 9;
Если интерпретировать ваш вопрос довольно сильно, похоже, что вы хотите псевдослучайно сгенерировать 2 разных целых числа от 0 до 9 включительно?
Итак, сгенерируйте первое , сгенерируйте еще один, если он такой же, как и первый повтор, пока он не изменится.
Я утверждаю, без обоснования, что этот метод будет таким же эффективным, как и любой другой метод.
Решение Аликс Аксель было самым простым и отлично работало для меня. Мне нужны три случайные записи из существующего массива, поэтому я использовал
$rands = array_rand(range(0,count($otherarray)),3);
, а затем отобразил записи, для которых ключ был в $ rands
.