C++ for里面随机数问题
本人小白一个,学了些C++基础#include<iostream>#include<string>#include<ctime>#include<vector>#incl...
本人小白一个,学了些C++基础#include <iostream>#include <string>#include <ctime>#include <vector>#include<stdio.h>using namespace std;int renshux = 10;string xing[8] = { "赵", "钱", "孙", "李", "周", "吴", "郑", "王" };string ming1[8] = { "启", "承", "龙", "乾", "嬴", "胜", "长", "德" };string ming2[8] = { "朋", "友", "自", "宗", "宇", "高", "班", "甲" };string zh;int x, shuru;vector<string> renshu;int main(){ bool over=false; srand((unsigned)time(NULL)); do { for (int a = 0; a <renshux; a++) { int b = (rand() % 8); int c = (rand() % 8); int d = (rand() % 8); string zh = xing[b] + ming1[c] + ming2[d]; renshu.push_back(zh); cout << a + 1 << renshu[a] << endl; } cin >> shuru; if (shuru == 2){ over = true; break; } } while (!over); return 0;}运行结果是 除非 shuru等于2 否则一直循环10个随机人名 但是循环的结果都是一样的
展开
3个回答
2017-09-11
展开全部
srand放到for里面去,每次rand前都要srand下,这是用C库rand的规则。renshu完全是多余的,按照你的程序意图,直接zh替代
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哈哈😄这让我懵逼了一下
你每次循环都在向renshu里面push_back
第二次产生的在renshu里面的位置是10~19
然而你每次循环后输出的都是0~9的人名
当然和前面的一样
你每次循环都在向renshu里面push_back
第二次产生的在renshu里面的位置是10~19
然而你每次循环后输出的都是0~9的人名
当然和前面的一样
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对机器来说相同的输入会有相同的输出,
所以rand函数其实只是一个伪随机函数,并没有做到真正的随机
rand函数可以传一个int类型参数,
你可以把把当前时间传进去造成一个更真的伪随机。
所以rand函数其实只是一个伪随机函数,并没有做到真正的随机
rand函数可以传一个int类型参数,
你可以把把当前时间传进去造成一个更真的伪随机。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询