I'm trying to create a random float between 0.15 and 0.3 in Objective-C. The following code always returns 1:
int randn = (random() % 15)+15;
float pscale = (float)randn / 100;
What am I doing wrong?
Попробуйте следующее:
(float)rand() / RAND_MAX
Или введите значение от 0 до 5:
float randomNum = ((float)rand() / RAND_MAX) * 5;
Несколько способов сделать то же самое.
попробуйте
float pscale = ((float) randn) / 100.0f;
Ваш код работает для меня, он выдает случайное число от 0,15 до 0,3 (при условии, что я использую srandom ()
). Вы вызывали srandom ()
перед первым вызовом random ()
? Вам нужно будет предоставить srandom ()
некоторое энтропийное значение (многие люди просто используют srandom (time (NULL))
).
Для более серьезной генерации случайных чисел ознакомьтесь с arc4random
, который используется в криптографических целях. Эта функция случайных чисел также возвращает целочисленный тип, поэтому вам все равно нужно будет привести результат к типу с плавающей запятой.