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个随机人名 但是循环的结果都是一样的 展开
 我来答
匿名用户
2017-09-11
展开全部
srand放到for里面去,每次rand前都要srand下,这是用C库rand的规则。renshu完全是多余的,按照你的程序意图,直接zh替代
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
捣蒜大师Edison
2017-09-11 · TA获得超过2963个赞
知道大有可为答主
回答量:3825
采纳率:77%
帮助的人:1326万
展开全部
哈哈😄这让我懵逼了一下
你每次循环都在向renshu里面push_back
第二次产生的在renshu里面的位置是10~19
然而你每次循环后输出的都是0~9的人名
当然和前面的一样
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈钊翔
2017-09-11 · 超过105用户采纳过TA的回答
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:75.2万
展开全部
对机器来说相同的输入会有相同的输出,
所以rand函数其实只是一个伪随机函数,并没有做到真正的随机
rand函数可以传一个int类型参数,
你可以把把当前时间传进去造成一个更真的伪随机。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式