【发布时间】:2017-06-12 09:43:54
【问题描述】:
我想在我的ff 类中创建一个单独的函数来生成一个随机数并返回该数字。当在循环外使用时,该函数似乎工作得很好。但是,当我将函数放入循环中时,即使我每次都调用随机函数,它也会不断生成相同的数字!我到底做错了什么?!
//return a random number
int ff::random_number() const
{
srand((unsigned)time(NULL));
return (rand() % 20 + 1); //in the range of 1 to 20
}
//creates an int list of random size and random elements
int ff::create_random_list()
{
list_length = random_number(); //the list size
list_of_numbers = new int[list_length]; //initilize the list
for (int i = 0; i < list_length; ++i)
list_of_numbers[i] = random_number(); //insert a random number
return 1;
}
- 注意:我检查了在此问题之前发布的所有类似问题,但没有人回答我的问题。只是说清楚。
【问题讨论】:
-
@Sneftel 这很有用,但称其为完全相同的副本并不公平!
-
我假设 (unisgned)time(NULL) 在循环内返回相同的值,因此您在每次循环迭代时将伪随机数生成器设置为相同的状态,它会为您提供相同的伪随机数每次(如预期)