首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递参数、参数、交换函数和随机数生成器

传递参数、参数、交换函数和随机数生成器
EN

Stack Overflow用户
提问于 2017-02-24 13:09:04
回答 1查看 444关注 0票数 0

我正在尝试创建一个随机数生成器,它首先交换最小值和最大值,然后再次交换它们(返回到它们的原始状态?)。我的另外两个问题是:如何判断交换是否实际发生(因为它似乎是一个不可见的过程),以及无论选择哪两个值作为最小值和最大值,随机数输出始终为1。

代码语言:javascript
复制
#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.

}
EN

回答 1

Stack Overflow用户

发布于 2017-02-24 13:15:53

你的代码中有太多的问题:

如果你在用maximum)

  • assigning覆盖之前没有保存minimum的值,那么maximum

  • 交换就不会发生:这个值丢失了,并且在第二次赋值时两者都有相同的值(这是一个值到它本身没有任何意义,我不理解它的用途(例如,minimum = minimum)

  • operator 使rand() % maximum + minimum解析为(rand() % maximum) + minimum,这可能不是你想要的
  • )如果你想在一个区间之间生成一个随机数,那么你必须使用区间界限之间的差异,不是它的和,例如rand() % (x - y) to not a range [x, y).
  • calling srand(time(NULL)) locally to randomNum()将重置生成器如果您在同一秒内多次调用该函数
  • 我不理解交换这些值以再次交换它们的全部目的,您是否需要对它们进行排序,以使较小的值始终存储在minimum中?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42431189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档