#include"iostream"#include"stdlib.h"#include"math.h"#include"time.h"using namespace std;#define Size 10typedef struct gIndividualMsg{int index;double weight;double value;}IndividualMsg;IndividualMsg Individual[10];int gambleChoose(){int i,j;int choose;double l;srand((unsigned int)time(NULL)); double SumValue=45;double seed=(double(rand()%10000))/10000; //此處規定了重量,價值只能精確到小數點后兩位cout<<seed<<endl; //xxxxfor(choose=0;choose<Size;choose++){ l=0;for(j=0;j<=choose;j++)l+=Individual[j].value/SumValue;if(l>=seed){ return choose;break;}}}int main(){srand(time(0));Individual[0].value=9;Individual[1].value=8;Individual[2].value=7;Individual[3].value=6;Individual[4].value=5;Individual[5].value=4;Individual[6].value=3;Individual[7].value=2;Individual[8].value=1;Individual[9].value=0;int a;for(int i=0;i<100;i++){ a=gambleChoose();cout<<a;cout<<endl;}return 0;}
1 回答

慕森王
TA貢獻1777條經驗 獲得超3個贊
計算機太快了,每次循環的種子是一樣的,將函數gambleChoose中的
srand((unsigned int)time(NULL));
語句刪除就好了。
- 1 回答
- 0 關注
- 84 瀏覽
添加回答
舉報
0/150
提交
取消