国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java實現(xiàn)按權重隨機數(shù)

Java實現(xiàn)按權重隨機數(shù)

2019-12-17 13:16junjie JAVA教程

這篇文章主要介紹了Java實現(xiàn)按權重隨機數(shù),本文給出了提出問題、分析問題、解決問題三個步驟,需要的朋友可以參考下

一、問題定義:

問下有一個數(shù)組,這些數(shù)組中的值都有自己的權重,怎樣設計才能高效的優(yōu)先取出權重高的數(shù)??

例如:

復制代碼代碼如下:

權重: 8  2  11  79
權重返回的值: 0  1  2   3

 

二、分析問題:

思路一:創(chuàng)建一個數(shù)組數(shù)組大小為權重和的大小,如值0的權重是8,則放入8個0值,值1的權重是2,則放入2個1值,依次類推。
然后用用一個權重和大小的隨機數(shù),產生隨機數(shù),即可。缺點要占用過多的內存。

思路二:

權重和數(shù)組 w[i]存儲的是[0,i]元素的所有元素的權重和  時間復雜度O(n) 空間復雜度O(n)
隨機[0,W[399]] 看隨機數(shù) 落在哪個Wi 內就選哪個  時間復雜度 O(longn) 
所以總的時間復雜度時間復雜度O(n) 空間復雜度O(n)

偽代碼:

輪盤賭 并不是一種特別好的選擇算子,但它容易實現(xiàn)。
首先要明白一點,由于交叉、變異等算子,并不能控制進化方向,所以進化的重任落在選擇算子上。
如果明白了這一點,就好辦了。

輪盤賭,就是積累概率來實現(xiàn)的,通常適應度大的被選擇的幾率較高。
假如:fit為適應度數(shù)組,共m個

復制代碼代碼如下:

for i=1 to m '先求和
sum=sum+fit(i)
next i
For i = 1 To n ‘n-是要生成多少個個體
temp = temp + fit(i)
If rnd <= temp / sum Then
   輸出 i 就是結果
Exit Function
End If
Next i

 

三、解決問題:

 

復制代碼代碼如下:

package datastruct;  
  
import java.util.HashMap;  
import java.util.Map;  
  
/** 
權重隨機數(shù): 
如              權重:8  2  11  79 
        權重返回的值:0  1  2   3 
@author ajian005 79331356@qq.com 
2014-2-16 21:12 
輸出結果:{2.0=184128, 11.0=348551, 79.0=1308100, 8.0=159221} 
*/  
  
public class WeightRandomTest {  
    private static double[] weightArrays = {8.0,2.0,11.0,79.0};  // 數(shù)組下標是要返回的值,數(shù)組值為數(shù)組下標的權重  
    public static void main(String[] args) {  
        WeightRandom weightRandom = new WeightRandom();  
        Map<Double, Integer> stat = new HashMap<Double, Integer>();  
        for (int i = 0; i < 2000000; i++) {  
            int weightValue = weightRandom.getWeightRandom(weightArrays);  
            if (weightValue < 0) {  
                continue;  
            }  
            System.out.println("按權重返回的隨機數(shù):" + weightValue);  
            if (stat.get(weightArrays[weightValue]) == null) {  
                stat.put(weightArrays[weightValue], 1);  
            } else {  
                stat.put(weightArrays[weightValue], stat.get(weightArrays[weightValue])+1);  
            }  
        }  
        System.out.println(stat);  
    }  
}  
  
class WeightRandom {  
    java.util.Random r = new java.util.Random();  
    private double weightArraySum(double [] weightArrays) {  
        double weightSum = 0;  
        for (double weightValue : weightArrays) {  
            weightSum += weightValue;  
        }  
        return weightSum;  
    }  
    public int getWeightRandom(double [] weightArrays) {  
        double weightSum = weightArraySum(weightArrays);  
        double stepWeightSum = 0;  
        for (int i = 0; i < weightArrays.length; i++) {  
            stepWeightSum += weightArrays[i];  
            if (Math.random() <= stepWeightSum/weightSum) {  
                //System.out.println(i);  
                return i;  
            }  
        }  
        System.out.println("出錯誤了");  
        return -1;  
    }     
}  

 

四、歸納總結:

俄羅斯輪盤賭就是積累概率來實現(xiàn)

按權重負載調度等

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品免费国产一区二区三区四区 | 欧美亚洲日本 | 成人免费视频视频 | 九色国产| 97久久超碰 | 日韩一区二区在线视频 | 国产又色又爽又黄又免费 | 操操操小说 | 精品日韩一区 | 国产片在线 | 日本不卡高字幕在线2019 | 中文字幕一区二区三区四区不卡 | 四虎影视在线观看 | 亚洲在线视频一区 | 国产一区二区免费 | 日韩一区二区免费电影 | 国产日韩久久 | 色xx综合网 | a级毛片免费高清视频 | 特级黄一级播放 | 午夜小电影 | 黄色a视频| 亚洲av毛片一区二二区三三区 | 97成人精品视频在线观看 | 国产一区二区精品丝袜 | 久久综合一区二区 | 动漫精品一区二区三区 | 欧美成人久久久免费播放 | 在线视频中文字幕 | 欧美视频在线观看免费 | 国产精品亚洲一区二区三区 | 免费电影一区 | 亚洲成人免费影院 | 久久久网页 | 国产精品亚洲第一区在线暖暖韩国 | 一区二区三区入口 | 日韩成人 | 国产视频在线播放 | 91在线观看 | 噜噜噜噜狠狠狠7777视频 | 欧美黄色网页 |