當前位置:首頁 » 操作系統 » 隨機分配演算法

隨機分配演算法

發布時間: 2022-05-17 09:59:22

㈠ 一元奪寶,隨機幸運號碼,是按什麼演算法分配的

看什麼平台吧,一般分兩種方式,一種是站內奪寶的前100個時間之和加上0.001,還有一種是站內奪寶的前100個時間之和加上0.001取值為A+第三方未知數據為B的方式開獎,相對來說後面一種可作弊的可能性小。

㈡ 微信紅包的隨機演算法是怎樣實現的

下面是一個比較拙的演算法,真實的紅包隨機數要稍微復雜些:

classProgram
{
staticvoidMain(string[]args)
{
double[]hb=WeiXin.Hongbao(5,1);

for(inti=0;i<5;i++)
{
Console.WriteLine(hb[i]);
}

}
}

///<summary>
///微信類
///</summary>
publicclassWeiXin
{
///<summary>
///紅包隨機分配
///</summary>
///<paramname="personNumber">紅包個數</param>
///<paramname="money">金額</param>
///<returns></returns>
publicstaticdouble[]Hongbao(intpersonNumber,doublemoney)
{
Randomrand=newRandom();
doublefen=money;
double[]hb=newdouble[personNumber];
doublerm=0D;

//預分配
for(inti=0;i<personNumber;i++)hb[i]=0.01;

fen-=(personNumber*0.01);

if(fen>0.01)
{
//隨機分配
while(fen>0)
{
rm=GetRandomNumber(0.01,fen);
hb[rand.Next(0,personNumber)]+=rm;
fen-=rm;
}
}

returnhb;
}

///<summary>
///返回介於minimum和maximum之間的隨機數
///</summary>
///<paramname="minimum">最小值</param>
///<paramname="maximum">最大值</param>
///<returns></returns>
(doubleminimum,doublemaximum)
{
Randomrandom=newRandom();
returnMath.Round(random.NextDouble()*(maximum-minimum)+minimum,2);
}
}

㈢ C語言怎麼實現隨機分配

srand(
(unsigned)time(
NULL
)
);
;
num=rand()%k;
用這個生成隨機數你應該會吧
然後給6個長方形每個一個隨機數,排序,然後將較大的2個一組,較小的2個一組,中間2個一組
也可以給每個方塊一個0-2的隨機數,同時在生成隨機的時候加特判,如果對應數字的組里滿了就重作隨機
由於方塊數少,不用太在乎演算法時間復雜度

㈣ 求 把 1800隨機分成900份 的演算法

第一節 隨機抽樣 基礎梳理 1. 簡單隨機抽樣 (1)定義:設一個總體含有N個個體,從中 抽取n個個體作為樣本(n≤N),如果每次抽取時總體內的各個個體被抽到 的機會都 ,就把這種抽樣方法叫做簡單隨機抽樣. (2)最常用的簡單隨機抽樣的方法: 和 . N n N n 2. 系統抽樣的步驟假設要從容量為N的總體中抽取容量為n的樣本. (1)先將總體的N個個體 ; (2)確定 ,對編號進行 ,當是整數時,取k= (3)在第1段用 確定第1個個體編號l(l≤k); (4)按照一定的規則抽取樣本,通常是將l加上間隔k得到第2個個體編號 ,再加k得到第3個個體編號 ,依次進行下去,直到獲取整個樣本. 3. 分層抽樣 (1)定義:在抽樣時,將總體 的層,然後按照 ,從各層獨立地抽取一定數量的個體,將各層取出的個體合在一起作為樣本,這種抽樣方法叫做分層抽樣. (2)分層抽樣的應用范圍:當總體是由 組成時,往往選用分層抽樣. 4. 三種抽樣方法比較類別 共同點 各自特點 相互聯系 適用范圍簡單隨機 抽樣抽樣過程中每個個體被抽到 的機會均等從總體中抽取總體中的 個體數較少系統抽樣 將總體 分成幾部分,按一定的規則分別在各部分中抽取在起始部分抽樣時採用抽樣總體中的 個體數較多分層抽樣 將總體分成 幾層,分層進行抽取各層抽樣時採用抽樣或抽樣總體由差異明顯的幾部分組成 答案: 1. (1)逐個不放回地 相等 (2)抽簽法 隨機數法 2. (1)編號 (2)分段間隔k 分段 (3)簡單隨機抽樣 (4)(l+k) (l+2k) 3. (1)分成互不交叉 一定的比例 (2)差異明顯的幾個部分 4. 逐個 均勻 簡單隨機 簡單隨機 系統 基礎達標 1. (教材改編題)在抽樣過程中,每次抽取的個體不再放回總體的為不放回抽樣,則分層抽樣、簡單隨機抽樣、系統抽樣中,為不放回抽樣的有( ) A.1個 B. 2個 C. 3個 D. 0個解析:三種抽樣都是不放回抽樣.答案:C 2. (教材改編題)為了解1 200名學生對學校某項教學實驗的 意見,打算從中抽取一個容量為30的樣本,考慮採用系統抽樣,則分段的間隔k為( ) A.40 B. 30 C. 20 D. 12 解析:總體容量N=1 200,樣本容量n=30,所以分段間隔k=40. 答案:A 3. (原創題)某養豬場養有四大名豬:大白豬、長白豬、杜洛克豬、漢普夏豬,其中大白豬有200頭,長白豬250頭,杜洛克豬180頭、漢普夏豬230頭,估計產量時,應採用的抽樣方法是( ) A. 分層抽樣 B. 隨機抽樣 C. 系統抽樣 D. 以上三種方法都可以解析:由於品種之間差異較大,故採用分層抽樣.答案:A 4. (2010·四川)一個單位有職工800人,其中具有高級職稱 的160人,具有中級職稱的320人,具有初級職稱的200人,其餘人員120人.為了解職工收入情況,決定採用分層抽樣的方法,從中抽取容量為40的樣本.則從上述各層中依次抽取的 人數分別是( ) A. 12,24,15,9 B. 9,12,12,7 C. 8,15,12,5 D. 8,16,10,6 5. (2009·廣東)某單位200名職工的年齡分布情況如圖,現要從中抽取40名職工作樣本.用系統抽樣法,將全體職工隨機按 1~200編號,並按編號順序平均分為40組(1~5號,6~10 號,…,196~200號).若第5組抽出的號碼為22,則第8組抽出 的號碼應是 .若用分層抽樣方法,則40歲以下年齡段應抽取 人.解析:因為抽樣比 = ,. 故各層中依次抽取的人數分別是 =8, =16, =10, 答案:D =6,故選D. 40 800 1 20 160 20 320 20 200 20 120 20 解析:由系統抽樣知第1組抽出的號碼為 2,則第8組抽出的號碼為2+5*7=37;當用分層抽樣抽取時,40歲以下年齡段應抽取 1 2 *40=20(人).答案:37 20 經典例題題型一 簡單隨機抽樣【例1】 上海世博會組委會決定從來自上海的1 800名志願者中,選取6人組成志願小組去中國館服務,請用抽簽法或隨機數法設計抽樣方案.解析:第一步,先將1 800名志願者編號,可以編為 0001,0002,0003,…,1800;第二步,在隨機數表中任選一個數,例如選出第2行第5列的 數2;第三步,從選定的數開始向右讀,依次可得0 736,0 751, 0 732,1 355,1 410,1 256為樣本的6個號碼,這樣我們就得到一個容量為6的樣本. 題型二 系統抽樣【例2】 從某廠生產的905輛家用轎車中隨機抽取90輛測試某項性能,請合理選擇抽樣方法進行抽樣,並寫出抽樣過程.解析:可用系統抽樣法進行抽樣,抽樣步驟如下:第一步,將905輛轎車用隨機方式編號;第二步,從總體中剔除5輛(剔除法可用隨機數法),將剩下的 900輛轎車重新編號(分別為001,002,…,900),並分成90段;第三步,在第一段001,002,…,010這十個編號中用簡單隨機 抽樣法抽出一個作為起始號碼(如006);第四步,把起始號碼依次加間隔10,可獲得樣本.變式2-1 下面給出某村委調查本村各戶收入情況所作的抽樣,閱讀並回答問題:本村人口:1 200人,戶數300,每戶平均人口數4人;應抽戶數:20戶;抽樣間隔: =60; 1200 20 確定隨機數字:取一張人民幣,編碼的後兩位數為12;確定第一樣本戶:編碼的後兩位數為12的戶為第一樣本戶;確定第二樣本戶:12+60=72,72號為第二樣本戶; … (1)該村委採用了何種抽樣方法? (2)抽樣過程中存在哪些問題,並修改. (3)何處是用簡單隨機抽樣?解析:(1)系統抽樣. (2)本題是對某村各戶進行抽樣,而不是對某村人口進行抽樣,抽樣間隔為 =15, 300 20 其他步驟相應改為確定隨機數字:取一張人民幣,編碼的後兩位數為12,確定第一樣本戶:編號為12的戶為第一樣本戶;確定第二樣本戶:12+15=27,27號為第二樣本戶. (3)確定隨機數字用的是簡單隨機抽樣,即「取一張人民幣,編碼的後兩位數是12」用的為簡單隨機抽樣. 題型三 分層抽樣【例3】 一中學有高一學生400人,高二學生302人,高三學生250人,現用分層抽樣法從全校所有學生中抽取一個容量為 190人的樣本,應剔除多少人?每個年級分別抽取多少人?解析:總體人數為400+302+250=952人,樣本容量為190,若按190∶952取樣,無法取得整數解,故考慮從高二學生中剔除 2人,抽取比例為190∶950=1∶5,則高一學生應抽400 =80 人,高三學生抽取250 =50人. 先從高二學生中剔除2人,高二學生抽取300 =60人,組成容量為190的樣本. 因此應從高二學生中剔除2人,高一學生抽取80人,高二學生抽取60人,高三學生抽取50人. 1 5  1 5  1 5  某學院的A,B,C三個專業共有1 200名學生,為了調查這些學生勤工儉學的情況,擬採用分層抽樣的方法抽取一個容量為 120的樣本.已知該學院的A專業有380名學生,B專業有420名學生,則在該學院的C專業應抽取 名學生.變式3-1 解析:C專業的學生有1 200-380-420=400名,由分層抽樣原理,應抽取120* 400 1200 =40名.答案:40 鏈接高考 (2010·重慶)某單位有職工750人,其中青年職工350人,中年職工250人,老年職工150人,為了了解該單位職工的健康情況,用分層抽樣的方法從中抽取樣本. 若樣本中的青年職工為7人,則樣本容量為( ) A. 7 B. 15 C. 25 D. 35 知識准備:知道分層抽樣中各層的抽樣比相同,並會求抽樣比.答案:B 解析:青年職工、中年職工、老年職工三層之比為7∶5∶3,所以樣本容量為 =15.故選B. 7 7 15

㈤ excel中例如,把1000隨機分配成30個數,其中30個數中上下浮動不能超過20,

三個數和是100,最大和最小差不超過20,也就是說。數值范圍在23.3到43.3之間波動。

可以採用用隨機數的方式,在23.3和43.3之間取倆個,最後一個數通過100-前兩數的和得出。

這個這個演算法執行10次。

下面,我把三個數的范圍設置24到42,

在A1中輸入公式=24+RAND()*18。然後通過拖動的方式(滑鼠移到右下角,游標為十字)復制公式到A2(也可以直接在A2中輸入公式=24+RAND()*18)。在A3中輸入公式=100-A1-A2

選中A1,A2,A3,豎向拖動到第十行。

因為存在小數,我給了檢測公式,如果不對看可把滑鼠放在A上,向下拉到A10,在橫向拉一下,相當於重新計算下。

㈥ 數學題:把52張牌隨機分給四個人,每人13張,求每人都得到一張A的概率,用排列組合公式計算

把52張牌分成四組
共有52!/(13!×13!×13!×13!)種
每組有一個A共有4!×48!/ (12!×12!×12!×12!)種
概率為≈0.1055

㈦ 求演算法 :將1到9隨機分配給9個變數,每個變數一個數字,不能重復

*Algorithm 1:{
int a[10] = {0}; /*0、1~9*/
int i, m;
for(i = 1; i < 10; i) {
while(a[m = rand() % 100]);
a[m] = i;
}
}
*Algorithm 2:{
int a[9] = {1..9};
for(int i = 0; i < 9; --i)
swap(a[i], a[rand()%i]);
}

㈧ 如何用excel進行隨機分配我想要將73個不同的任務分配給17個人 如何做分配完之後將每個人分配到的任務

  1. 先對任務和人員進行編號。(人員和任務都可以加一個輔助列,用random函數返回一個小數,根據輔助列的小數排序後依次編號。)


  2. 按照機械抽樣的方式將任務依次分派給各個人員。

    結果見表


㈨ 隨機紅包金額如何決定的

從工程角度來說,紅包分配演算法需要簡單粗暴的實現。

有些人的演算法過於復雜,第幾個人領取都要面面俱到的計算,考慮因素太多,工程實現上真的沒必要。
其實只需要按照如下框架即可:

1. 發紅包時,按照設計的快速隨機演算法,將紅包分好若干份。

2. 按照設計的評估演算法,對得到的紅包分配進行校驗。

3. 如果校驗不通過,如貧富差距過大,則重復隨機分配。

4. 如果若干次重復,如5次,則停止重復,就按照當前分配。

5. 再有用戶請求紅包,直接隊列化請求,再從紅包序列中取出對應編號紅包。

上述方案的優勢是:
1. 只需「一次」計算。

隨機演算法選擇簡單粗暴的即可,系統按照校驗策略對其評價,不滿足則有限次重復,直到滿足或次數太多為止。

2. 此後就只有讀取。

後續操作完全是讀取緩存,無需密集計算。

那麼是不是還有更簡單粗暴的方案呢?還是有的,那就是偽隨機序列查表法。

百萬千萬級別的紅包請求,如果每次都按照真隨機來計算,仍然會有不小的計算壓力。

索性預先計算得到若干偽隨機分配方案,調用時只需要隨機選擇一個即可。
舉例來說,有人的紅包是10元分配給5人,系統預先存有多種分配方案,如1,1,2,3,3,或1,1,2,2,4,請求時隨機選取一個方案即可。

當然,各種組合未必能窮盡,但是只需要讓用戶在有限次操作中覺得這是隨機就夠了。
(9)隨機分配演算法擴展閱讀
微信紅包是騰訊旗下產品微信於2014年1月27日推出的一款應用,功能上可以實現發「紅包」、查收發記錄和提現。

2014年4月14日,「安卓手機用戶只要用微信掃描身邊出現的紅色二維碼,通過騰訊應用寶成功安裝其他應用軟體,即可領取微信紅包。

2019年2月10日,微信官方發布2019年春節數據報告,除夕到初五,8.23億人次收發微信紅包。
設計簡單

在「微信紅包」這個功能的設計上,遵循了簡單的原則。發送方通過「新年紅包」公眾號,選擇發送紅包的數量和金額,以及祝福的話語,通過「微信支付」進行支付,就可以發送給好友;接收方則在打開後獲得相應收益,只需要將儲蓄卡與微信關聯,就可以在一個工作日後提現。2014年1月27日前,用戶在搶紅包之前,要先寫上祝福,然後才可以搶。在這之後,已經改為先搶紅包再發送祝福的過程。

㈩ 微信紅包的隨機演算法是怎樣實現的

我們在一個20人的群中,自己發紅包以及結合其他人發出紅包的情況,整合成兩輪的數據。每次金額設置都是20塊並且有20個,第一輪是發了15次,第二輪是發了19次,總結成表格,然後為了避免突發的數據影響判斷,我們將兩輪數據雜糅從而生成了其他的三輪數據,一共是五輪數據。羅列如下表,高亮的數據為最佳手氣。每一列的數據最早搶到紅包的在最底端,越往上越晚搶。
從所有黃色的數值(最佳手氣金額)可看出,所有最佳手氣值都在平均值*2的前後附近(平均值=總金額/紅包總個數,這里平均值=20/20=1),事實上確實如此,可通過微信紅包分發演算法得到驗證,演算法具體見後文
然後我們選取部分數據開始製作散點圖。橫軸為1-20,分別表示搶到紅包的人的編號,隨遞增而越早。也就是20代表最早搶到的人。縱軸為金額。同樣的形狀顏色的點代表一次發紅包,然後我們抓取部分數據顯示為散點圖,越密集代表該順序位的用戶得到的金額越穩定。散點圖如下:

規律一:我們可以看到,所有紅包大多數金額分布在0.5到1.5元之間,顯示為圖中方框所示,大部分點都分布在這個位置。然後是順序位密集程度的對比,可以發現20、19,也就是最先搶到紅包的人,小圓圈所示基本的點都集中在小范圍,說明先搶紅包的人得到的金額會比較穩定,但同時最佳手氣的概率也比較低。大圓圈所示的是極不穩定,飄忽的金額分布,表示越晚搶紅包得到的金額會飄忽不穩,但同時,搶到最佳手氣等大金額的紅包概率也比早搶的高。
根據上面的分析,我們又寫了一個過濾計數函數,針對金額的分段的紅包個數進行統計:
比如2.0-2.5
得到如下金額分布:
折線圖:
規律二:絕大多數的紅包的金額都集中在1-1.5,也就是說20塊錢發20個紅包的金額分布集中在比平均數大一點點的附近,同時較大幅超過平均數金額的紅包大大少於低於於平均數的紅包數量。
那我們繼續擴大數據的規模,將幾輪數據的均值和標准差分別做成折線圖:
綜合上面各個折線圖的情況,我們可以得到越早搶紅包的標准差越小,越晚搶紅包的標准差越大,但同時,由均值和總額可以看出來,越早搶紅包的均值往往要更高,紅包金額得到最佳手氣概率也會相對較小,越晚搶紅包的人則得到最佳手氣等大手氣的概率更大。
為了得到更為趨近規律的曲線和規律,我們決定將兩輪真實數據合並起來,然後給出冪函數的趨近線(虛線),如下圖:
由於均值受極值波動影響較大,所以我們去除一些因為偶然差產生的極端點(圓圈的點)從而發現是遞增的趨勢。
規律三:可以很明顯的看到,均值是隨著搶紅包的越晚而緩慢遞減,標准差值同時也往上遞增,這個趨勢結合之前的分析,我們猜想,即標准差越大說明,領取到最大的紅包和最小紅包的風險越大,也就是說越晚搶標准差越大,對於冒險主義者來講是最好的,因為他有很大概率獲得最大的金額,但也大概率獲得最小的紅包,風險與收益並存;均值越大,說明每次都拿到一個不大不小的紅包,雖然獲得最小和最大金額紅包的概率很小,但起碼不虧本,也就是說越早搶,均值越穩定,這比較適合不喜歡冒險的人。
驗證預測結果:
21:24分發送預測結果到另一位同學微信:

隨後開始發紅包:

結果:
最佳手氣為第8個人且金額為1.13
與預測結果一致,規律基本正確!
總結:
(1)最佳手氣為1.13塊,根據我們推導的預測公式=總額/紅包總個數*2*隨機數(0-2的double數), 也就是說最佳手氣在總額/紅包總個數*2值的前後附近。這里我們判斷在0.8-1.3之間,推斷正確
(2)平均值為0.5元,0.5-0.8元的紅包有3個,小於0.5的紅包有6個,說明大於平均值的紅包個數多於小於平均值的個數。與我們的第二點預測完全正確
(3)最佳手氣位置:根據我們的散點圖發現,最先搶到紅包的人,得到的金額會比較穩定,但同時最佳手氣的概率也比較低。表示越晚搶紅包得到的金額波動較大,但同時搶到最佳手氣等大金額的紅包概率也比早搶的高。所以我們推斷,最佳手氣位置在最後20%-30%之間。
微信紅包隨機分發演算法c++模擬:
基本思路:每次搶到一個紅包金額等於:紅包剩餘金額/紅包剩餘個數*2*隨機數(0-1的double型),如果計算的結果小於等於0.01,則取0.01值
主要代碼:
double packages[50000];
double Luckiest_money=0;
void getPackage(int remainSize,double remainMoney){
srand((unsigned)time(NULL));
for(int i=0;i

熱點內容
java的基本結構 發布:2024-10-11 15:12:24 瀏覽:730
大眾suv哪個內部配置好 發布:2024-10-11 14:30:39 瀏覽:93
緩存到資料庫失敗 發布:2024-10-11 14:27:44 瀏覽:678
我的世界手機國際怎麼創建伺服器 發布:2024-10-11 13:45:46 瀏覽:420
svnlinux命令 發布:2024-10-11 13:35:54 瀏覽:234
ig加密語音 發布:2024-10-11 12:19:25 瀏覽:487
釘圖上傳 發布:2024-10-11 12:11:27 瀏覽:479
腳本個 發布:2024-10-11 12:10:43 瀏覽:151
剛性攻絲的編程 發布:2024-10-11 12:10:39 瀏覽:469
怎麼登錄安卓版全民tv 發布:2024-10-11 12:10:33 瀏覽:624