传递参数、参数、交换函数和随机数生成器
Passing arguments, parameters, swap function and a random number generator
我正在尝试创建一个随机数生成器,该生成器首先交换最小值和最大值,然后再次交换它们(回到原始状态?我的另外两个问题是:我如何判断交换是否实际发生(因为它似乎是一个不可见的过程),并且无论选择哪两个值作为最小值和最大值,随机数输出始终为 1。
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
int minimum;
int maximum;
//Swap function
void swap (int& minimum, int& maximum) {
minimum = maximum;
maximum = minimum;
}
int randomNumber;
//Random number generator
void randomNum() {
minimum = minimum;
maximum = maximum;
srand(time(NULL));
randomNumber = rand() % maximum + minimum;
cout<<"Your random value is: " << randomNum;
}
int main() {
cout<<"Please enter your minimum value: " << endl;
cin>>minimum;
cout<<"Please enter your maximum value: " << endl;
cin>>maximum;
swap (minimum, maximum); //Calling swap function
randomNum(); //Needs to swap again somehow.
}
代码中存在大量问题:
- 如果在用
maximum
覆盖之前不保存minimum
的值,则无法进行交换:该值丢失,并且在第二次分配时两者都具有相同的值(这是maximum
) - 为自己赋值没有任何意义,我不明白它的目的(例如
minimum = minimum
) - 运算符优先级使
rand() % maximum + minimum
解析为(rand() % maximum) + minimum
,这可能不是您想要的 - 如果要在区间之间生成随机数,则必须使用区间边界之间的差值,而不是其总和,例如
rand() % (x - y)
来获得范围[x, y)
。 - 在本地调用
srand(time(NULL))
randomNum()
将重置生成器,如果在同一秒内多次调用该函数 - 我不明白交换值以再次交换它们的整个目的,您是否需要对它们进行排序以使较小的值始终存储在
minimum
中还是什么?
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 制作具有平均值的随机数生成器
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 尝试在 c++ 中创建随机数生成器并收到错误
- 存储并重新加载随机数生成器状态
- 作为随机数生成器的争用条件
- 播种随机数生成器以使用分叉的好方法是什么?
- 随机数生成器的性能因平台而异
- 随机数生成器的种子和状态有什么区别?
- RcppShark 随机森林示例引发有关随机数生成器的异常
- C++多个实例的随机数生成器组种子中增强
- C++随机数生成器仅生成 0 - C++ 11
- GSL+OMP:C++中的线程安全随机数生成器
- 贪吃蛇游戏 - 食物瓷砖的随机数生成器
- 随机数生成器在 C++ 用于 skipList.
- RSA 加密和解密期间的随机数生成器要求
- 如何使用 cpp 设置随机数生成器的语法?
- 传递参数、参数、交换函数和随机数生成器
- 了解随机数生成器调用中的C 参数
- 更改随机数生成器的参数