PHP 与 C 中的随机数

    计算机程序是从确定的起点到达确定的终点,整个运行过程都是确定的,所以,生成一个随机数就让程序有点小痛苦了,如下面的小程序:

 

复制代码
#include <stdio.h>

int get_random(int a){
    
return rand() % a;
}

int main(int argc , char *argv[]){

    
int N   = 10;
    
int num = 10;
    
int i;
    
for(i = 0 ; i < N ; i++){

        printf(
"%d => %d\n", i, get_random(num));
    }
}
复制代码

 

我可以肯定的说:在我的机器上运行10000000的结果都是一个样子的,如下:

 

复制代码
zyf@zhangyufeng:~/C$ ./random 
0 => 3
1 => 6
2 => 7
3 => 5
4 => 3
5 => 5
6 => 6
7 => 2
8 => 9
9 => 1
复制代码

 

这样问题就出现了,这种伪随机数每次出现的都一样,导致扑克牌游戏中每次抓到的牌都是一样的,咋整? 于是C中还有一个叫seed的东西,就是说把这个人工设置的seed值加入到随机器的计算中去。但是,这个seed值应该可以随时变化,时间是一个很帅的考虑对象,实现如下:

 

复制代码
#include <stdio.h>
#include 
<time.h>

int get_random(int a){
    srand(time(NULL));
    
return rand() % a;
}

int main(int argc , char *argv[]){

    
int N   = 10;
    
int num = 10;
    
int i;
    
for(i = 0 ; i < N ; i++){
        sleep(
1);
        printf(
"%d => %d\n", i, get_random(num));
    }   
}   
复制代码

 

 

接下来是PHP的随机数,和C中几乎一模一样,不过PHP中的rand函数基本上已经不需要srand的,它本身就可以提供不断变化的随机数:

 

复制代码
<?php

//有些计算机上$num不能大于32678
function get_random($num){
    
//srand(time());
    return rand(0, $num);
}   

$num 
= 10;

for ($i = 0 ; $i < 10 ; $i++){
    
//sleep(1);
    echo $i, ' => ', get_random($num) , "\n";
}   
?>
复制代码

 

-------------------------------------------------------------------------------------------------------------------------------

 

太简单的东西,没啥技术含量。

 

posted @   玉米疯收  阅读(309)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
历史上的今天:
2008-08-13 Mac OSX 10.4.8下AC97声卡的完美安装
2008-08-13 Mac OSX 10.4.8 tiger 下BCM5788网卡的完美安装
点击右上角即可分享
微信分享提示