随机数问题

要产生真正的随机数还是有难度的!好在VC中提供有随机数函数,rand()函数。MSDN中定义如下:

 

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

void main( void )

{

  int i;  

/* Seed the random-number generator with current time so that    * the numbers will be different every time we             run.    */

srand( (unsigned)time( NULL ) );   /* Display 10 numbers. */   for( i = 0;   i < 10;i++ )     

printf( "  %6d/n",rand() );

}

产生0 1代码

#include <iostream>

#include <stdio.h>

#include <time.h>

 

using namespace std;

 

#define MAX 10

 

int main()

{

int out;

srand((unsigned)time(NULL));//时间函数作为种子。程序执行一次和下一次执行,时间函数是不一样的,所以结果不一样。

                                                 //但是如果程序执行多篇,结果哦就是一样的了!看样子还得MATLAB解决了!

for(int i=0;i<12;i++)

{

if(rand()%MAX>4)

out=1;

else

out=0;

cout<<out<<endl;

}

 

return 0;

}

 

这是没有问题的,但要产生10个种群,也就是10个产生为12的群体时,就发现不行了!

 

#include <iostream>

#include <stdio.h>

#include <time.h>

 

using namespace std;

 

#define MAX 10

 

int main()

{

int out;

for(int j=0;j<10;j++)

{

srand((unsigned)time(NULL));

for(int i=0;i<12;i++)

{

if(rand()%MAX>4)

out=1;

else

out=0;

cout<<out<<endl;

}

cout<<'/n'<<endl;

}

return 0;

}

 

结果10个一样的长度为12的个体!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值