| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1537 人关注过本帖
标题:求帮忙改改我的随机数程序!!!
只看楼主 加入收藏
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
为测试结果,加了一个 main 函数。我给你注释掉了这些行。
//#include <ctype.h>
//#include <stdlib.h>
//#include <errno.h>
#include <stdio.h>
#include <windows.h>
//unsigned irand;
static unsigned int _next = 1;
int rand( void )
{
    _next = ( ( ( _next * 0x4E6D ) & 0xffff ) + 12345 ) & 0x1fff;
    return _next;
}
int main(void) {
    int i;
    //_next = time(NULL);
    _next = GetTickCount();
    for (i=0; i<10; i++)
        printf ("%d\n", rand());
    return 0;
}
我发现随机数种子用 Windows 函数更为有效。
但你用来在LCD上显示,和Windows没什么关系的。
2014-05-05 16:17
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
因此代码大概可以这样:

#include <stdio.h>
static unsigned int _next = 1;
int rand( void )
{
    _next = ( ( ( _next * 0x4E6D ) & 0xffff ) + 12345 ) & 0x1fff;
    return _next;
}
int srand()
{
    _next = time(NULL);
}
加一个种子函数。
开始前,先调用一次 srand, 再反复调用 rand 即可。
2014-05-05 16:20
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
此贴有另一个重复贴,请版主趁早下手吧。
2014-05-05 16:25
cjw320
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 12 楼 top398
我如果不加一个#include <time.h>,程序里的这行 _next = time(NULL);就会报错。。。
可是加上 #include <time.h>,编译时就会出现ACTION:  PARSING SOURCE-FILE     ERROR:    PREPROCESSOR: MACROS TOO NESTED
2014-05-05 16:29
cjw320
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 13 楼 top398
我把另一个重复帖已经结帖了啊。。。
我第一次发帖,还不会弄,不知道怎么就出来了两个
2014-05-05 16:31
cjw320
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 13 楼 top398
我把另一个重复帖已经结帖了啊。。。
我第一次发帖,还不会弄,不知道怎么就出来了两个
2014-05-05 16:31
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
这是不应该出错的。你是这样加的吗?
#include <stdio.h>
#include <time.h>
static unsigned int _next = 1;
……
看出错信息也不知道是什么编译器。如果代码写法没问题,那就是编译器有问题了。
2014-05-05 16:33
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
楼主从未说他是用啥编译器编译的

DO IT YOURSELF !
2014-05-05 16:34
cjw320
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2014-5-5
收藏
得分:0 
回复 17 楼 top398
是那么写的啊。。我不知道是什么问题。。我用的是keil uv3
我用不用加一个time的头文件到工程里啊?
2014-05-05 16:35
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
以下是引用cjw320在2014-5-5 16:31:18的发言:

我把另一个重复帖已经结帖了啊。。。
我第一次发帖,还不会弄,不知道怎么就出来了两个
可以理解,一时手抖吧。版主只会删除重复的未回复贴。
2014-05-05 16:36
快速回复:求帮忙改改我的随机数程序!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017727 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved