| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 638 人关注过本帖
标题:随机数生成程序!!!
收藏  订阅  推荐  打印 
xiaolaopo
Rank: 1
等级:新手上路
帖子:20
积分:332
注册:2008-7-31
随机数生成程序!!!

下面是一个随机数生成程序,如何使得随机数生成在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-8-22 10:49
snakealpha
Rank: 3Rank: 3
来自:扬州
等级:中级会员
威望:1
帖子:266
积分:2880
注册:2005-11-5

所得随机数对100取余~

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-8-22 11:04
xiaolaopo
Rank: 1
等级:新手上路
帖子:20
积分:332
注册:2008-7-31

恩,谢谢啊!如果随机数在0-1内该怎么办啊?
2008-8-22 11:11
snakealpha
Rank: 3Rank: 3
来自:扬州
等级:中级会员
威望:1
帖子:266
积分:2880
注册:2005-11-5

看你需要的精度啦,除以100、1000之类的就行了
rand函数的灵活性很大,需要弄出什么范围之内的,都要自己使用四则运算转化才行。
不过说白了,使用rand的秘诀也就是个四则运算。

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-8-22 11:21
ldyong
Rank: 1
等级:新手上路
帖子:2
积分:120
注册:2008-8-22

不知道怎么保存
2008-8-22 11:37
snakealpha
Rank: 3Rank: 3
来自:扬州
等级:中级会员
威望:1
帖子:266
积分:2880
注册:2005-11-5

嘎?
没理解楼上的意思...
保存什么?

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-8-22 11:40
ldyong
Rank: 1
等级:新手上路
帖子:2
积分:120
注册:2008-8-22

不知道怎么用啊 #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());
}

[ 本帖最后由 ldyong 于 2008-8-22 11:45 编辑 ]
2008-8-22 11:43
xiaolaopo
Rank: 1
等级:新手上路
帖子:20
积分:332
注册:2008-7-31

不行哦
2008-8-22 11:55
snakealpha
Rank: 3Rank: 3
来自:扬州
等级:中级会员
威望:1
帖子:266
积分:2880
注册:2005-11-5

嘎嘎,什么怎么用?

我来先解释一下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的修正(不好意思上面的回复忘了这个,见谅,见谅^^)

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

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

天涯也有江南信
梅破知春近
夜阑风细得香迟
不道晓来开遍向南枝
2008-8-22 12:02
xiaolaopo
Rank: 1
等级:新手上路
帖子:20
积分:332
注册:2008-7-31

楼主讲述的很详细哦,谢谢!
2008-8-22 13:34
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.058015 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved