php 根据权重随机数,PHP根据概率产生随机数
假設?有四個選項:a?占?10%,b占20%?,C占30%?,?d?占?40%?,原理就是現獲取隨機數,然后找區間。
當然了,選項的數量可以任意。目前默認是?總和是?100%?。如果需要別的數,修改?隨機數的范圍即可。
這個算法,比較簡單,效率也還算高。
$data = array(
'a' => 10 ,
'b' => 20 ,
'c' => 30 ,
'd' => 40
);
echo randomSelect( $data );
function randomSelect( &$array ){
$datas = $array ;
if( !is_array($datas) || count($datas) == 0 )
return ;
asort($datas); //按照大小排序
$random = rand(1,100);
$sum = 0 ;
$flag = '';
foreach($datas as $key => $data ){
$sum += $data ;
if( $random <= $sum ){
$flag = $key;
break ;
}
}
if( $flag == '' ){ // 如果傳遞進來的值的和小于100 ,則取概率最大的。
$keys = array_keys($datas);
$flag = $keys[count($keys) - 1] ;
}
return $flag;
}
給定一個函數rand()能產生0到n-1之間的等概率隨機數,問如何產生0到m-1之間等概率的隨機數?
題目:給定一個函數rand()能產生1到n之間的等概率隨機數,問如何產生1到m之間等概率的隨機數? 先把問題特殊化,例如原題變為給定一個函數rand5(),該函數可以隨機生成1-5的整數,且生成概率一 ...
面試題:給定一個函數rand()能產生1到m之間的等概率隨機數,產生1到n之間等概率的隨機數?
雖然TX的面試已經過去好幾天了,然而慘痛的過程還歷歷在目.人生中第一次正式job面試就這么掛掉了.在于面試官的交流過程中,被問及了幾個算法設計題,在今后幾篇博文中,我一一總結與諸君分享. 1.?給定一 ...
JAVA 根據設置的概率生成隨機數
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...
【watcher】 #02 c# 中實現時間戳等,日期數字及大概率絕對隨機數 實現
在Wacher的項目中,用到了很多時間記錄的地方,為了將來能夠和在線數據打通,我們使用了時間戳來記錄時間信息 由于c#?沒有現成的方法,所以我們重新寫了一個Helper類來幫助我們使用這些公共函數 同 ...
10,隨機等概率的輸出m個不重復的數
今天看到一段代碼,可以從0.....n-1中隨機等概率的輸出m個不重復的數(n遠遠大于m).遂記錄下來. 首先,產生隨機數,不免要用到srand,rand函數.先簡單介紹下兩個函數. 1,void s ...
[JS]Math.random()
參考網址:http://www.soulteary.com/2014/07/05/js-math-random-trick.html [JS]Math.random()的二三事 看到題目,如果大家平時 ...
php 抽獎概率 隨機數
<?php $prize_arr = array( '0' => array('id' => 1, 'title' => 'iphone5s', 'v' => 5), ' ...
C# 獲取一定區間的隨即數 0、1兩個值除隨機數以外的取值方法(0、1兩個值被取值的概率相等)
獲取隨機數 舉例:0-9 Random random = new Random(); int j = random.Next(0, 9); 0.1兩個值被取值的概率相等 int a = Math.Ab ...
隨機推薦
Unity3D ShaderLab 車輛噴漆光照模型實戰
這一篇,我們來創建一個車輛噴漆的光照模型.首先就是準備場景,新建Shader?&?Material. 過程比較簡單,直接看完成的代碼吧: Shader "91YGame/CarOut ...
OC中成員變量的命名
先前寫C++ 的時候,命名成員變量一般都是用 m_veriableName:的方式,但是進到新項目組,用了OC以后,發現成員變量都是用 veriableName_的方式,最后的一個下劃線表示是成員變量 ...
計算幾何基礎——矢量和叉積 &;&; 叉積、線段相交判斷、凸包(轉載)
轉載自?http://blog.csdn.net/william001zs/article/details/6213485 矢量 如果一條線段的端點是有次序之分的話,那么這種線段就稱為 有向線段,如果 ...
poj 2251 搜索
Dungeon Master Time Limit:?1000MS ? Memory Limit:?65536K Total Submissions:?13923 ? Accepted:?5424 D ...
PowerDesigner 怎么給 Table Properties 增加注釋和默認值
1.? 選中表,右鍵 2. 選中“comment”, 這個就是列的注釋 3.還是這個頁面 ,往下有個“default value”, 這個就是你設置的默認值. 4.?這個是怎么設置默認值.
ES聚合實例
在es中需要根據app_categor進行聚合,JSON查詢語句如下: { "query": { "bool": { "must": [ { ...
list集合接口
import java.util.ArrayList; import java.util.List; class Phone { private String brand; private doubl ...
GMA Round 1 向量計算
傳送門 向量計算 已知$\left |\overrightarrow{AB} \right |^2+\left |\overrightarrow{CD} \right |^2+\left |\over ...
Mongodb 筆記 - 性能及Java代碼
性能 以下數據都是在千兆網絡下測試的結果 寫入 數據量的增大會導致內存占滿, 因為mongodb會將數據盡可能地載入內存, 索引占用的空間也很可觀非安全模式下, 速度取決于內存是否占滿能差一個數量級, ...
bzoj1497 [NOI2006]最大獲利 最大權閉合子圖
鏈接 https://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路 最大權閉合子圖的裸題 一開始知道是這個最大權閉合子圖(雖然我不知道名字),但是我 ...
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的php 根据权重随机数,PHP根据概率产生随机数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java连接oracle密码错误,jav
- 下一篇: oracle v$access执行很慢,