網站首頁 健康小知識 母嬰教育 起名 運動知識 職場理財 情感生活 綠色生活 遊戲數碼 美容 特色美食 愛好
當前位置:酷知知識幫 > 遊戲數碼 > 遊戲

輪盤技巧之概率算法

欄目: 遊戲 / 發佈於: / 人氣:2.67W

操作方法

(01)設P(i),其中i=1..n,為n個個體被選擇的概率 ,在輪盤上表示為所佔扇區的面積百分比,這裏顯然sum(P)=1。select用來保管n次選擇的結果。1)第一種完成方法:能夠想象一個轉動的輪盤,留意這裏輪盤最多隻轉一圈。每次轉輪盤前,把色子隨機放到輪盤外緣的某處,即色子不隨輪盤轉動,以一個隨機數sel代表它所處的位置。輪盤轉動後,色子所指示的輪盤扇區號不時變化,輪盤中止時色子所指示的輪盤上扇區號,即為本次輪盤賭所選中的個體號。for i = 1:n  %第i次擲色子sel = rand;   %產生一個0、1之間的隨機數,代表色子在輪盤外緣所指示的位置sumPs = 0;  %輪盤初始轉動的位置,從0變化到1j = 1;  %輪盤初始指示的位置while sumPs<sel  %終止條件為輪盤轉動的位置超越色子位置sumPs = sumPs + P(j)  %輪盤轉動j = j + 1;  %輪盤指示位置endselect(i) = j-1;  %輪盤中止時色子停留位置所指示的個體end  %循環終了,會對輪盤上由P所劃分出來的n個區間產生n次隨機選擇,扇區越大,該扇區被選中的概率也越大還需求留意的是:上面的程序中,我們當然能夠把n改成2*n或者10*n,產生的結果都是“個體概率 所表示扇區越大,該個體被選中的概率也越大”,並且隨着實驗次數的增大,這一結果越準確。2)這種辦法能夠想象成往劃分好扇區的輪盤裏扔色子,事前生成一組滿足平均散佈的隨機數,代表n次擲色子或者n個色子一同扔,輪盤不動,色子所在區域為選擇結果。r = rand(1,n)  %預先產生n個色子的位置,留意這裏r服從0、1之間平均散佈for i = 1:n  %第i次輪盤賭select(i) = n;  %本次輪盤賭的結果初始化為nfor j = 1:n  %輪盤開端轉動if r(j) <=P(i)  %若色子停在輪盤第j扇區select(i) = j; %則第i次輪盤賭的結果為jbreak;  %第i次輪盤賭完畢end %~第i次輪盤賭完畢end %~第i次輪盤賭完畢end %n次輪盤賭完畢下面為完好的matlab程序完成function Select=Roulette(P,num)%:按輪盤賭戰略選擇下一點,返回num次輪盤賭結果%:第一種輪盤賭辦法,精度很低,% m = length(P);% Select = zeros(1,num);% for i=1:num%     Select(i) = m;% 初始化為最後一個%     for j=1:m %:按概率 選擇%         if P(j)>rand()%             Select(i)=j;%             break;%         end%     end% end%:第二種輪盤賭辦法,精度較高m = length(P);Select = zeros(1,num);r = rand(1,num);for i=1:numsumP = 0;j = ceil(m*rand); %產生1~m之間的隨機整數while sumP < r(i)sumP = sumP + P(mod(j-1,m)+1);j = j+1;end%Select(i) = mod(j-1,m)+1-1;Select(i) = mod(j-2,m)+1;end% 本程序中輪盤賭辦法的精確水平可由如下程序考證% P=rand(10,1);% P=P./sum(P);% Select=Roulette(P,1e6);% for i=1:10%     Ps(i)=(sum(Select==i)/1e6);% end%:最後考證該輪盤賭辦法精確水平%:比擬P和Ps差別大小,例如sum((P-Ps).^2),數值越小,模仿結果越好!

輪盤技巧之概率算法
輪盤技巧之概率算法 第2張