📄 subject_56921.htm
字号:
<p>
序号:56921 发表者:纯子 发表日期:2003-10-21 18:51:08
<br>主题:产生随机数的问题
<br>内容:我想产生这样一组随机数:[0,4]产生100个,其中,【0,1】10个,【1,2】20个,【2,3】30个,【3,4】40个,我该怎么办?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:下次用什么名字? 回复日期:2003-10-21 19:03:24
<br>内容:产生【0,1】之间的float是吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:纯子 回复日期:2003-10-21 19:12:44
<br>内容:【0,1】之间的我会产生,关键是如何将产生的10个【0,1】,20个【1,2】,30个【2,3】,40个【3,4】重新随机排序,并取出
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:下次用什么名字? 回复日期:2003-10-21 19:19:37
<br>内容:【0,1】的产生20个;<BR>【0,1】的再产生20个,20个数都加1就是【1,2】之间的吧<BR>如此类推<BR>没有人规定你非要一次产生100个吧
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:纯子 回复日期:2003-10-21 19:36:25
<br>内容:问题是第一个20个都是在【0,1】,第二个20个都是在【1,2】之间,我的原意是这40个应该是随机无序排列的,只要统计起来有20个在【0,1】,有20个在【1,2】
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:下次用什么名字? 回复日期:2003-10-21 19:39:49
<br>内容:明白你的意思了<BR>很有意思的问题,我想想……<BR>呵呵,你怎么产生随机float的?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:下次用什么名字? 回复日期:2003-10-21 21:34:08
<br>内容:我做了一个,不过肯定有比较简单的办法,<BR> int n[100];<BR> int i;<BR> int j;<BR> for(i=0;i<100;i++) n[i]=i;<BR> int f[100];///产生随机float,sorry,我不会,以int 代替<BR><BR> srand(GetTickCount());//设置随机数种子<BR><BR> char ch[100][13];<BR> CString strMessage=_T("");<BR> char chTemp[13];<BR> for(i=0;i<100;i++)<BR> {<BR> for(j=0;j<10;j++)<BR> ch[i][j]=rand()%26+'a';<BR> ch[i][10]=i/10+48;<BR> ch[i][11]=i%10+48;<BR> ch[i][12]=NULL;<BR> }<BR><BR> CString str1,str2;<BR><BR> for(i=0;i<100;i++)<BR> {<BR> for(j=0;j<99-i;j++)<BR> {<BR> str1=_T(ch[j]);<BR> str2=_T(ch[j+1]);<BR> if(str1>str2)<BR> {<BR> strcpy(chTemp,ch[j]);<BR> strcpy(ch[j],ch[j+1]);<BR> strcpy(ch[j+1],chTemp);<BR> }<BR> }<BR> ch[99-i][0]=ch[99-i][10];<BR> ch[99-i][1]=ch[99-i][11];<BR> }<BR><BR> for(i=0;i<100;i++)<BR> {<BR> f[atoi(ch[i])]=rand()%10;<BR> if(i<10)<BR> f[atoi(ch[i])]+=0;///产生随机float,sorry,我不会,以int 代替<BR> else if(i<30)<BR> f[atoi(ch[i])]+=10;<BR> else if(i<60)<BR> f[atoi(ch[i])]+=20;<BR> else if(i<100)<BR> f[atoi(ch[i])]+=30;<BR> }<BR>//////////统计<BR> int range[4];<BR> range[0]=range[1]=range[2]=range[3]=0;<BR> for(i=0;i<100;i++)<BR> {<BR> range[f[i]/10]++;<BR> itoa(f[i],chTemp,10);<BR> strMessage+=_T(chTemp);<BR> strMessage+=_T("\r\n");<BR> }<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[3],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[30-39]:");<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[2],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[20-29]:");<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[1],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[10-19]:");<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[0],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[0-9]:");<BR><BR> SetDlgItemText(IDC_EDIT_OUT,strMessage);<BR><BR>拜托你告诉我怎么产生随机float
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:saka 回复日期:2003-10-22 01:01:23
<br>内容:随机产生100个(0-4)//用循环语句<BR>分别用变量a,b,c保存0-1,1-2,2-3的随机数的个数,满足条件退出循环即可。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:下次用什么名字? 回复日期:2003-10-22 10:42:38
<br>内容:我重新写了一个函数,代码比先的短写,至于速度,看你的运气,踩地雷次数太多可能就慢了<BR>void CTestDlg::OnOK() <BR>{<BR> // TODO: Add extra validation here<BR> <BR> int i,j;<BR> int f[100];///产生随机float,sorry,我不会,以int 代替<BR> CString strMessage=_T("");<BR> char chTemp[256];<BR> <BR> srand(GetTickCount());//设置随机数种子<BR><BR> for(i=0;i<100;i++) f[i]=-1;<BR><BR> for(i=0;i<100;i++)<BR> {<BR> for(int k=0;;k++)<BR> {<BR> j=rand()%100;<BR> if(f[j]<0)//f[j]<0时,表明f[j]未赋值,f[j]>=0时,表明f[j]已经赋值,即所谓踩地雷<BR> break;<BR> }<BR> sprintf(chTemp,"i=%3d时,连续%3d次踩地雷后才碰到安全的%3d\r\n",i,k,j);//////////统计<BR> strMessage+=_T(chTemp);//////////统计<BR> f[j]=rand()%10;///产生随机float,sorry,我不会,以int 代替<BR> if(i<10)<BR> f[j]+=0;<BR> else if(i<30)<BR> f[j]+=10;<BR> else if(i<60)<BR> f[j]+=20;<BR> else if(i<100)<BR> f[j]+=30;<BR> }<BR><BR>//////////统计<BR> int range[4];<BR> range[0]=range[1]=range[2]=range[3]=0;<BR> for(i=0;i<100;i++)<BR> {<BR> range[f[i]/10]++;<BR> if(f[i]<0) MessageBox("错误!出现未赋值的情况!");//检查是否赋值<BR> itoa(f[i],chTemp,10);<BR> strMessage+=_T(chTemp);<BR> strMessage+=_T("\r\n");<BR> }<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[3],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[30-39]:");<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[2],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[20-29]:");<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[1],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[10-19]:");<BR> strMessage.Insert(0,"\r\n");<BR> itoa(range[0],chTemp,10);<BR> strMessage.Insert(0,chTemp);<BR> strMessage.Insert(0,"[0-9]:");<BR><BR> SetDlgItemText(IDC_EDIT_OUT,strMessage);<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:下次用什么名字? 回复日期:2003-10-22 10:46:57
<br>内容:虽然罗嗦,函数实现的是:<BR>10个[0-9]的随机数<BR>20个[10-19]的随机数<BR>30个[20-29]的随机数<BR>40个[30-39]的随机数<BR><BR>关键:这100个数在数组里不是顺序存放的,而是随机的<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -