兩種洗牌演算法比較

2021-06-15 07:14:35 字數 910 閱讀 8286

////演算法1原理:

/*1.用乙個整型陣列記錄各個位置是否已經放置了數,如果放置了則不為0,否則為0。所以在演算法開始的時候,初始化此陣列每個元素的值都為0.

2.每次產生乙個0-53之間的數,看這個位置是否放置了數,如果已經放置了,則繼續採用同樣的方法找乙個隨機的位置進行判斷,如果這個位置還未放置,則設定此位置。

3.反覆執行步驟2,直到所有的位置都放好了數。

*///演算法2原理

//先對陣列進行初始化,然後隨機交換陣列中任意兩個元素。交換的次數越多就越隨機。

#include "stdafx.h"

#include #include #include void shuffle1(int a,int num)

while (a[pos]!=0);

a[pos]=card; }}

void shuffle2(int a,int num)

}int _tmain(int argc, _tchar* argv)

; int b[54]=;

clock_t start=clock();

shuffle1(a,54);

clock_t end=clock();

float time=(float)(end-start)/clocks_per_sec;

start=clock();

shuffle2(b,54);

end=clock();

time=(float)(end-start)/clocks_per_sec;

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

printf("\n");

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

printf("\n");

system("pause");

return 0;

}

洗牌程式的兩種實現方法比較

size t shuffle22 int s,int n for int i n 1 i 0 i return t 因為 第1次移動後,第1個數還在第1個位置的概率是1 n,後續移動只會減少這個概率。所以這個演算法不是完全隨機的 修改後的演算法其實就是使用c 的stl庫中的random shuffl...

洗牌程式的兩種實現方法比較

首先,我介紹一種很常見的方法 隨機生成法 我自己命名的 這方法我在掃雷遊戲中隨機分布雷的位置時用過 思想是一樣的 該方法要點就是從頭開始逐個隨機生成規定區域的數字,如果新生成隨機數之前已經生成過就不儲存該數 如果新生成的隨機數之前沒有生成過就儲存該數 直到生成的數字的數量達到所需的數量。實現 如下 ...

C 兩種查詢演算法的比較

網上找了不少資料關於c 中獲得當前系統時間也給個鏈結,以備不時之需!我的實驗就是比較順序排序和二分排序在大資料量的情況下的差異,構造了乙個mytimer類用於記錄程式執行所消耗的時間!演算法 不貼了,main 的部分貼出來!測試結果 兩者之間演算法的差距太大了.如果不是怕浪費時間,肯定採用更大的陣列...