////演算法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 的部分貼出來!測試結果 兩者之間演算法的差距太大了.如果不是怕浪費時間,肯定採用更大的陣列...