为什么m_edit显示的字符都是一样的?请帮帮我!

wjf598 2006-11-15 07:29:26
我是个初学者,请大哥哥们帮帮我!....
如下代码为什么m_edit显示的字符都是一样的?我想要每个字符都不一样!

int m_mc=11+2;
//m_mc 为变量

char m_ds[50];

for(int m_x=0;m_x<m_mc;m_x++)
{
srand(0);
m_ds[m_x]=s_c((char)rand()%9);
}
m_edit=m_ds;//CString 对话框上的一个编辑框
UpdateData(FALSE);
}

char s_c(char xx)
{

char ss;
switch(xx)
{
case 1: ss='a';break;
case 2: ss='b';break;
case 3: ss='c';break;
case 4: ss='d';break;
case 5: ss='e';break;
case 6: ss='f';break;
case 7: ss='j';break;
case 8: ss='k';break;
case 9: ss='l';break;
case 0: ss='m';break;
default:ss='n';
}
return ss;

}
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
longbeibei 2006-11-17
  • 打赏
  • 举报
回复
修改成srand(m_x);
只要每次不是 srand(0)就可以了
longbeibei 2006-11-17
  • 打赏
  • 举报
回复
rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。

为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a) 功能是初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列。,

srand(seed);

然后调用rand()就可以了,相同的seed产生的随机数排列是相同的
比如
srand(20);
假设调用rand()后产生随机数4,6,7,8,然后退出程序,下一次运行时产生的还是4,6,7,8

要想每次运行产生不同的随机数就用srand(TIME(NULL));
记得srand()用头文件stdlib.h,TIME(NULL)用time.h

那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,是吧。利用srand((unsign)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的,对了,你知道time() 函数的功能是返回从1970/01/01到现在的秒数的吧,可能这个起始时间不正确,你查一下对不对吧,C还提供了另一个更方便的函数,

randomize()原形是void randomize(),功能是用来始初rand() 的种子的初始值,而且该值是不确定的,它相当于srand((unsign)(time(NULL)) 不过应注意的是randomize()的功能要通过time来实现所以在调用它时头文件要包含time.h罢了
BoXoft 2006-11-17
  • 打赏
  • 举报
回复
看 VC98\CRT\SRC\RAND.C
void __cdecl srand (
unsigned int seed
)
{
...
holdrand = (long)seed;
...
}
int __cdecl rand (
void
)
{
...
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
...
}

srand(0)之后holdrand等于0,于是rand()返回38,最后得到'b'。
你需要将srand()放到for循环的外面。

另外,m_ds[]需要初始化:
char m_ds[50] = {0};
lshadow 2006-11-17
  • 打赏
  • 举报
回复
for循环中UpdateData(FALSE);这一句之前加上 Sleep(100);
wjf598 2006-11-17
  • 打赏
  • 举报
回复
数据流--我不会看,可不可以指明一下!先谢了!
little_phs 2006-11-15
  • 打赏
  • 举报
回复
查看一下数据流.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧