首页 > 解决方案 > 在 switch 语句中使用 rand()

问题描述

我一直在编写一个随机程序,但是当我将一个随机函数 rand() 放入其中时,输出总是相同的。它是用 C++ 编写的。例子:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
    srand(time(NULL));
    int genre, rVal, rCat;
cin>> genre;

switch(genre){
        case '1' :
            rVal = rand() % 7;
            rCat = rand() % 3;
            break;
        case '2' :
            rVal = rand() % 2;
            rCat = 1;
            break;
        case '3' :
            rVal = rand() % 4;
            rCat = 1;
            break;
        case '4' :
            rVal = rand() % 7;
            rCat = rand() % 3;
        if(rVal<=3 && rCat == 1)
            {
                rVal = 1;
                                };
            break;
        case '5' :
            rVal = 1;
            rCat = 1;
        break;};
        cout<< rVal << rCat;};

在流派中选择 1 将始终使结果相同, srand(time(NULL)) 在程序的早期调用,并且所有其他随机化函数都有效,除了 switch 语句中的那个

标签: c++

解决方案


您确定该流派是 char 吗?你的开关测试'1'不是1..


推荐阅读