c++ - 在 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 语句中的那个
解决方案
您确定该流派是 char 吗?你的开关测试'1'不是1..
推荐阅读
- python - Spotify API,桌面应用程序
- php - dockerizing laravel 项目后出现 TokenMismatchException 错误
- xml - 如何使用 XSLT 删除 XML 中的重复字段
- rest - 使用 Spock 对 Jooby 应用程序进行集成测试
- reactjs - 为什么子组件不更新?
- c# - 更新应用程序后 Web 请求上的 Xamarin iOS HttpRequestException “Connection reset by peer”
- python - 如何覆盖我的模板而不是 django 管理面板来重置密码?
- kentico - 小部件使用限制
- typescript - Stack(LinkedList)实现从后端保存大数据
- android - APK第二次安装失败