Генерируйте два количества, которые не равны по PHP

Спасибо, за такую ​​хорошую дискуссию.

Я сделал следующее:

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 ++.

Спасибо всем. Я прочитал выше и решил свою проблему.

Ребята, вы можете поделиться.

9
задан Fred Bergman 11 October 2009 в 10:26
поделиться

11 ответов

$rnd1 = rand(0,9);
do {
  $rnd2 = rand(0,9);
} while ($rnd1 == $rnd2);
22
ответ дан 4 December 2019 в 05:51
поделиться
$r = str_shuffle("0123456789");
$r1 = (int) $r[0];
$r2 = (int) $r[1];
49
ответ дан 4 December 2019 в 05:51
поделиться
$random1 = (rand() % 10)
$random2 = $random1 + (rand()%9)+1 

Таким образом, они никогда не равны (так как к $ random1 будет добавлено как минимум 1)

если оба числа должны быть от 0 до 9, вам просто нужно сделать это с помощью последняя операция модификации:

$random1 = (rand() % 10)
$random2 = ($random1 + (rand()%9)+1 ) %10 
8
ответ дан 4 December 2019 в 05:51
поделиться
$random1 = 4;
$random2 = 5;
7
ответ дан 4 December 2019 в 05:51
поделиться
$numbers = array_rand(range(0, 9), 2);

echo '<pre>';
print_r($numbers);
echo '</pre>';
5
ответ дан 4 December 2019 в 05:51
поделиться

Думаю, вы обнаружите, что 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;
}
2
ответ дан 4 December 2019 в 05:51
поделиться
function random($min, $max) {
    $stack = range($min, $max);
    shuffle($stack); 
    $nr1 = array_pop($stack);
    $nr2 = array_pop($stack);
    return array($nr1, $nr2);
}

Это могло бы помочь, не будучи математиком :)

4
ответ дан 4 December 2019 в 05:51
поделиться

Если вам просто нужно уникальных чисел , просто начните с нуля и добавьте +1 для каждого нового числа.

Если вам нужны случайные уникальные числа , просто сохраните свои предыдущие номера в списке, и когда вам понадобится новый,

1
ответ дан 4 December 2019 в 05:51
поделиться
$random1 = rand() % 9;
$random2 = ($random1 + 1) % 9;
-1
ответ дан 4 December 2019 в 05:51
поделиться

Если интерпретировать ваш вопрос довольно сильно, похоже, что вы хотите псевдослучайно сгенерировать 2 разных целых числа от 0 до 9 включительно?

Итак, сгенерируйте первое , сгенерируйте еще один, если он такой же, как и первый повтор, пока он не изменится.

Я утверждаю, без обоснования, что этот метод будет таким же эффективным, как и любой другой метод.

-1
ответ дан 4 December 2019 в 05:51
поделиться

Решение Аликс Аксель было самым простым и отлично работало для меня. Мне нужны три случайные записи из существующего массива, поэтому я использовал

$rands = array_rand(range(0,count($otherarray)),3);

, а затем отобразил записи, для которых ключ был в $ rands .

0
ответ дан 4 December 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: