| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5428 人关注过本帖
标题:随机数生成程序!!!
只看楼主 加入收藏
xiaolaopo
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-7-31
收藏
 问题点数:0 回复次数:14 
随机数生成程序!!!
下面是一个随机数生成程序,如何使得随机数生成在1-100的范围之内啊?谢谢!
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/timeb.h>

void main(void)
{
    int i;
    unsigned int seedVal;
    struct timeb timeBuf;
    ftime(&timeBuf);
    seedVal=((((unsigned int)timeBuf.time&0xFFFF)+
                 (unsigned int)timeBuf.millitm)^
                 (unsigned int)timeBuf.millitm);
    srand((unsigned int)seedVal);
    for(i=0;i<10;++i)
        printf("%6d\n",rand());
}
搜索更多相关主题的帖子: 随机数 
2008-08-22 10:49
snakealpha
Rank: 1
来 自:扬州
等 级:新手上路
威 望:1
帖 子:267
专家分:0
注 册:2005-11-5
收藏
得分:0 
所得随机数对100取余~

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-08-22 11:04
xiaolaopo
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-7-31
收藏
得分:0 
恩,谢谢啊!如果随机数在0-1内该怎么办啊?
2008-08-22 11:11
snakealpha
Rank: 1
来 自:扬州
等 级:新手上路
威 望:1
帖 子:267
专家分:0
注 册:2005-11-5
收藏
得分:0 
看你需要的精度啦,除以100、1000之类的就行了
rand函数的灵活性很大,需要弄出什么范围之内的,都要自己使用四则运算转化才行。
不过说白了,使用rand的秘诀也就是个四则运算。

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-08-22 11:21
ldyong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-8-22
收藏
得分:0 
不知道怎么保存
2008-08-22 11:37
snakealpha
Rank: 1
来 自:扬州
等 级:新手上路
威 望:1
帖 子:267
专家分:0
注 册:2005-11-5
收藏
得分:0 
嘎?
没理解楼上的意思...
保存什么?

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-08-22 11:40
ldyong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-8-22
收藏
得分:0 
不知道怎么用啊 #include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/timeb.h>

void main(void)
{
    int i;
    unsigned int seedVal;
    struct timeb timeBuf;
    ftime(&timeBuf);
    seedVal=((((unsigned int)timeBuf.time&0xFFFF)+
                 (unsigned int)timeBuf.millitm)^
                 (unsigned int)timeBuf.millitm);
    srand((unsigned int)seedVal);
    for(i=0;i<10;++i)
        printf("%6d\n",rand());
}

[[it] 本帖最后由 ldyong 于 2008-8-22 11:45 编辑 [/it]]
2008-08-22 11:43
xiaolaopo
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-7-31
收藏
得分:0 
不行哦
2008-08-22 11:55
snakealpha
Rank: 1
来 自:扬州
等 级:新手上路
威 望:1
帖 子:267
专家分:0
注 册:2005-11-5
收藏
得分:0 
嘎嘎,什么怎么用?

我来先解释一下srand和rand:
srand参数是一个unsigned int类型,决定了随机数表的"种子"
而"种子"就决定了随机数表的内容,所以说,随机数种子如果相同,则使用相同的随机数表,则在相同随机数位置出现的数字也就一定是一样的.
seedVal=((((unsigned int)timeBuf.time&0xFFFF)+
                 (unsigned int)timeBuf.millitm)^
                 (unsigned int)timeBuf.millitm);
这段代码,则是为了获得一个相对随机的种子,以此使得生成的伪随机数尽量接近绝对随机数
只要调用srand,就会改变伪随机数表,并将随机数序数重置为0;
调用rand,则从当前伪随机数表中提取"下一个"伪随机数,序数加一.

我记得rand的返回值,也就是随机数,好象是int类型(当然,也可能我记错了,那就是long int,反正不影响)
随机数为此类型定义范围内的任何值都有可能.而对其进行处理的事情要你自己来作.

比如,上边所说取1~100范围之内(含100),就用
Value=rand()%100+1;
因为rand()%100值的范围是0~99,所需范围是1~100,所以需要加上1的修正(不好意思上面的回复忘了这个,见谅,见谅^^)

取模就是随机数处理最重要的步骤了,其他或加或减或乘或除就随需要而定了.

[[it] 本帖最后由 snakealpha 于 2008-8-22 12:03 编辑 [/it]]

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-08-22 12:02
xiaolaopo
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-7-31
收藏
得分:0 
楼主讲述的很详细哦,谢谢!
2008-08-22 13:34
快速回复:随机数生成程序!!!
数据加载中...
 
   



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

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