如何使用自定义随机函数为C++数组填入-100到100的随机数
解决方案
先修复现有代码的隐藏逻辑问题
你当前将srand(seed)写在randBetween函数内部,每次调用函数都会用当前秒级时间戳重置随机种子。短时间多次调用时种子完全相同,会生成完全一样的随机数,因此需要调整初始化逻辑:
- 随机种子
srand(time(0))只需在程序启动时执行1次,移到main函数最开头即可 - 删除
randBetween内部的种子初始化代码
为数组赋值随机数的实现方法
通过循环遍历数组每个元素,依次调用randBetween赋值即可,以下是完整可运行的修正后代码:
#include <iostream> #include <ctime> using namespace std; int randBetween() { const int MIN_VALUE = -100; const int MAX_VALUE = 100; return (rand() % (MAX_VALUE - MIN_VALUE + 1 )) + MIN_VALUE; } int main() { // 全局只初始化一次随机种子 srand(time(0)); const int SIZE = 10; int myArray[SIZE]; // 方法1:传统for循环,兼容所有C++版本 for (int i = 0; i < SIZE; i++) { myArray[i] = randBetween(); } // 方法2:C++11及以上版本可用范围for循环,写法更简洁 // for (auto& elem : myArray) { // elem = randBetween(); // } // 可选:输出验证结果 for (int i = 0; i < SIZE; i++) { cout << myArray[i] << " "; } return 0; }
内容的提问来源于stack exchange,提问作者Breadman33
相关产品推荐
相关产品推荐

