随机编号的数组给出相同的数字
Random numbered array gives the same number
我正在尝试生成两个随机数数组。一个数组表示文本艺术鱼缸的高度,另一个数组则表示宽度。但是数组总是有相同的重复数。
例如:[2,2,2,2]或[9,9,9]
我一定是错误地设置了循环,但我需要帮助看看哪里出了问题。
//Generate random numbers for fish positions in vector
if ( fish_collection.size() != 0 )
{
int randHeight[fish_collection.size()];
int randWidth[fish_collection.size()];
for ( int i = 0; i < fish_collection.size(); i++ )
{
srand (time(NULL));
randHeight[i] = rand() % 10 + 1;
randWidth[i] = rand() % (tank_size - 5) + 1;
}
//random number printed test
for ( int i = 0; i < fish_collection.size(); i++ )
{
cout << randWidth[i] << ',';
}
cout << endl;
//Enter the fish in random position
for ( int j = 0; j < fish_collection.size(); j++ )
{
tank_frame[randHeight[j]].replace ( randWidth[j], fish_collection[j].size(), fish_collection[j] );
}
}
在程序中只需要调用srand(time(NULL))
一次(通常在main的开头)。
不止一次调用它,我相信会重置整个序列,这解释了为什么每次都会得到相同的号码(第一个)。(你总是接到相同的第一个电话的原因是,很可能电话离得很近,时间也一样)。
"time(NULL)"返回自1970年1月1日00:00以来的秒数,这解释了为什么"srand(time(NULL。(请参阅此链接)
每次调用rand()
函数时都会调用srand()
。这是不正确的:srand()
应该在程序开始时只使用一次,因为您传递给它的值设置了rand()
值的整个序列。在本例中,您总是使用相同的参数调用srand()
(因为时间不经常更新),因此rand()
序列总是相同的,因此对rand()
的调用总是返回相同的值。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- 从字母数字 QString 中提取编号
- SIFT的OpenCV编号曾经作为第一个关键点数字匹配
- 如何从 9 和 90 中提取 2.9 和 2.09,即获取数字等于最大编号的小数部分.二分位数之后的数字
- 构建一个程序,将 10 个整数放入数组中并识别重复的数字并输出它们及其位置编号的位置
- 后面跟着文字数字的带编号的反向引用
- 随机编号的数组给出相同的数字