Генерируйте случайное число в диапазоне

so.c в 15 символов :

main(){main();}

Результат:

antti@blah:~$ gcc so.c -o so
antti@blah:~$ ./so
Segmentation fault (core dumped)

Редактирование : Хорошо, это дает предупреждения с - Стена и не вызывает переполнение стека с-O2. Но это работает!

7
задан Troy Alford 26 November 2012 в 18:10
поделиться

7 ответов

Равномерное

Если вы хотите (псевдо-) равномерное распределение (с равными интервалами) между 0,9 и 1,1, то будет работать следующее:

  range = 0.2
  return 1-range/2+rand(100)*range/100

Отрегулируйте диапазон соответствующим образом.

Псевдонормальное

Если вам нужно нормальное распределение (кривая колокола), вам понадобится специальный код, который будет зависеть от языка / библиотеки. Вы можете получить точное приближение с помощью этого кода:

sd = 0.1
mean = 1
count = 10
sum = 0
for(int i=1; i<count; i++) 
  sum=sum+(rand(100)-50)
}
normal = sum / count
normal = normal*sd + mean
15
ответ дан 6 December 2019 в 04:52
поделиться

Вам нужен диапазон от -1 до 1 в качестве вывода вашего выражения rand ().

( rand(2) - 1 )

Затем масштабируйте диапазон от -1 до 1 по мере необходимости. Скажем, для варианта .1 с любой стороны:

(( rand(2) - 1 ) / 10 )

Затем просто добавьте один.

(( rand(2) - 1 ) / 10 ) + 1
1
ответ дан 6 December 2019 в 04:52
поделиться

Разделите на 100 и прибавьте 1. (Полагаю, вы ищете диапазон от 0 до 2?)

1
ответ дан 6 December 2019 в 04:52
поделиться

low + (random () / 100) * range

Например:

0.90 + (random () / 100) * 0,2

2
ответ дан 6 December 2019 в 04:52
поделиться

Если rand () возвращает случайное число от 0 до 100, все, что вам нужно сделать, это:

(rand() / 100) * 2

, чтобы получить случайное число от 0 до 2.

Если на С другой стороны, вам нужен диапазон от 0,9 до 1,1, используйте следующее:

0.9 + ((rand() / 100) * 0.2)
3
ответ дан 6 December 2019 в 04:52
поделиться
return 0.9 + rand(100) / 500.0

или я что-то упустил?

6
ответ дан 6 December 2019 в 04:52
поделиться

Как близко? Вы можете использовать гауссиан (он же

2
ответ дан 6 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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