實現乙個,按 不同 權重 隨機元素的實現,如:a的權重為1,b的權重為2,那麼 隨機元素的時候 b的出現概率為 2/3 ,a出現的概率為 1/3。
/*** 不等概率(權重)隨機
* * **
@param
sampledatamap 樣本資料,key: 資料,value: 資料的權重
* @return
*/public
static long unequalprobabilityrandom(mapsampledatamap)
if (sampledatamap.size() == 1)
int size =sampledatamap.size();
maplist
sampledatamap.values().foreach(weight ->
string key =randomstringutils.randomalphanumeric(size);
});list
resultlist =sampledatamap.entryset()
.parallelstream()
.filter(entry ->objects.equals(weight, entry.getvalue()))
.map(map.entry::getkey)
.collect(collectors.tolist());
return resultlist.get(randomutils.nextint(0, resultlist.size()));
}
隨機概率問題全集
問題 已知有個rand7 的函式,返回1到7隨機自然數,讓利用這個rand7 構造rand10 隨機1 10。只呼叫一次rand7 肯定無法達到目的。我們呼叫兩次rand7 這樣我們可以隨機的得到1 49中的乙個數,為什麼呢?我們將49分成7段,1 7,8 14,15 21,22 28,29 35,...
按概率隨機選取
據我了解,random.choice seq 是等概率選取乙個,不是我想要的。而numpy.random.choice seq,p,k 是按概率隨機重複選取多個,這正是我想要的。但是,我不想為這麼乙個函式引入巨大的numpy庫,所以打算自己實現乙個按概率隨機選取的函式。特此將 記錄如下 import...
按概率隨機選取
據我了解,random.choice seq 是等概率選取乙個,不是我想要的。而numpy.random.choice seq,p,k 是按概率隨機重複選取多個,這正是我想要的。但是,我不想為這麼乙個函式引入巨大的numpy庫,所以打算自己實現乙個按概率隨機選取的函式。特此將 記錄如下 import...