C随机数生成函数

[复制链接]
1623|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 | 显示全部楼层
换个系统,还可以用么,该函数还需要继续完善
冒泡的鱼儿 发表于 2015-9-22 22:42 | 显示全部楼层
RAND_MAX在不同机器上定义不同,我的机器上为0x7fff(即32767),这个是在哪个头文件里面定义的了?
白丁野老 发表于 2015-9-23 10:24 | 显示全部楼层
对于单片机程序员来说,这个函数基本用不着的
风中的雨down 发表于 2015-9-25 09:20 | 显示全部楼层
其实还是在rand()这个函数上发展出来的
 楼主| 東南博士 发表于 2015-9-25 14:41 | 显示全部楼层
是啊!
就是这个意思
追逐浪花 发表于 2015-9-30 13:33 | 显示全部楼层
非常的赞啊,这个很有用
以前都用MATLAB做这种事情
shenmu2012 发表于 2015-10-7 17:55 | 显示全部楼层
rand()函数只能生成[0, RAND_MAX]范围的整数,RAND_MAX在不同机器上定义不同。
shenmu2012 发表于 2015-10-7 17:56 | 显示全部楼层
int random(int min, int max) {  
    return (int)(my_rand() * (max-min) + min);  
}    这个可以直接的调用的?
 楼主| 東南博士 发表于 2015-10-9 14:11 | 显示全部楼层
是可以直接调用的!
tongbu2015 发表于 2015-10-15 21:38 | 显示全部楼层
随机数在一些测试中还是挺有用处的。
zhangbo1985 发表于 2015-10-16 19:44 | 显示全部楼层
rang()的随机函数用法挺多的。
 楼主| 東南博士 发表于 2016-12-3 10:46 | 显示全部楼层

rand()函数只能生成[0, RAND_MAX]范围的整数,RAND_MAX在不同机器上定义不同
石鹏波 发表于 2016-12-4 10:38 | 显示全部楼层
我也用一下,试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

385

主题

6103

帖子

35

粉丝
快速回复 在线客服 返回列表 返回顶部