打印

C随机数生成函数

[复制链接]
902|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
東南博士|  楼主 | 2015-9-20 14:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C标准库strlib中带的srand()和rand()函数可以实现随机数的生成,不过rand()函数只能生成[0, RAND_MAX]范围的整数,RAND_MAX在不同机器上定义不同,我的机器上为0x7fff(即32767),下面实现自己的可拓展的random()函数:
  • #include <stdio.h>  
  • #include <stdlib.h>  
  • #include <time.h>  
  •   
  • // my_rand() : Return uniform random number in [0, 1]  
  • double my_rand() {  
  •     // rand() : return uniform random number in [0, RAND_MAX]  
  •     return (double)rand() / RAND_MAX;  
  • }  
  •   
  • int random(int min, int max) {  
  •     return (int)(my_rand() * (max-min) + min);  
  • }  
  •   
  • int main() {  
  •     int min = 5;  
  •     int max = 20;  
  •     int i = 0;  
  •     int n = 100;  
  •   
  •     srand(time(NULL));  
  •     while(i < n) {  
  •         int r = random(min, max);  
  •         printf("%d ", r);  
  •   
  •         if(r < 5 || r > 20) {  
  •             printf("error!\n");  
  •             break;  
  •         }  
  •   
  •         i++;  
  •     }  
  •     printf("\n");  
  •   
  •     return 0;  
  • }  

评分
参与人数 1威望 +3 收起 理由
blong75 + 3

相关帖子

沙发
blong75| | 2015-9-21 08:14 | 只看该作者
赞一个!还是有点用的

使用特权

评论回复
板凳
打着哈欠说| | 2015-9-21 20:08 | 只看该作者
我试试可以用不

使用特权

评论回复
地板
邓布利多| | 2015-9-22 15:14 | 只看该作者
换个系统,还可以用么,该函数还需要继续完善

使用特权

评论回复
5
冒泡的鱼儿| | 2015-9-22 22:42 | 只看该作者
RAND_MAX在不同机器上定义不同,我的机器上为0x7fff(即32767),这个是在哪个头文件里面定义的了?

使用特权

评论回复
6
白丁野老| | 2015-9-23 10:24 | 只看该作者
对于单片机程序员来说,这个函数基本用不着的

使用特权

评论回复
7
风中的雨down| | 2015-9-25 09:20 | 只看该作者
其实还是在rand()这个函数上发展出来的

使用特权

评论回复
8
東南博士|  楼主 | 2015-9-25 14:41 | 只看该作者
是啊!
就是这个意思

使用特权

评论回复
9
追逐浪花| | 2015-9-30 13:33 | 只看该作者
非常的赞啊,这个很有用
以前都用MATLAB做这种事情

使用特权

评论回复
10
shenmu2012| | 2015-10-7 17:55 | 只看该作者
rand()函数只能生成[0, RAND_MAX]范围的整数,RAND_MAX在不同机器上定义不同。

使用特权

评论回复
11
shenmu2012| | 2015-10-7 17:56 | 只看该作者
int random(int min, int max) {  
    return (int)(my_rand() * (max-min) + min);  
}    这个可以直接的调用的?

使用特权

评论回复
12
東南博士|  楼主 | 2015-10-9 14:11 | 只看该作者
是可以直接调用的!

使用特权

评论回复
13
tongbu2015| | 2015-10-15 21:38 | 只看该作者
随机数在一些测试中还是挺有用处的。

使用特权

评论回复
14
zhangbo1985| | 2015-10-16 19:44 | 只看该作者
rang()的随机函数用法挺多的。

使用特权

评论回复
15
東南博士|  楼主 | 2016-12-3 10:46 | 只看该作者

rand()函数只能生成[0, RAND_MAX]范围的整数,RAND_MAX在不同机器上定义不同

使用特权

评论回复
16
石鹏波| | 2016-12-4 10:38 | 只看该作者
我也用一下,试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

382

主题

6081

帖子

34

粉丝