最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)帶有權重隨機算法的示例詳解

 更新時間:2023年10月10日 15:07:51   作者:prettyspider  
這篇文章主要為大家詳細介紹了Java如何實現(xiàn)帶有權重隨機算法,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起學習一下

1.什么是權重比例

權重比例計算即將各數(shù)值乘以相應的權數(shù),然后加總求和得到總體值,再除以總的單位數(shù)。

如何計算

有一個對象集合為[A,B,C,D,E,F,G,H,I,J],其對象的全紅

總權重為10

每一個對象的權重為1/10=0.1

2.什么是權重覆蓋區(qū)域

權重覆蓋區(qū)域是對象在整體權重范圍中的鎖分配到的區(qū)域 

因此在計算權重時將對應的權重比例放入到數(shù)組中,便于后期計算權重覆蓋區(qū)域

3.如何隨機的獲取對應的區(qū)域

使用java數(shù)據(jù)工具列Arrays的binarySearch()

int binarySearch(double[] a, double key) 

這個方法會根據(jù)key找到 -插入點索引-1

對應的插入點為 -結果-1

當獲取到指定的權重覆蓋區(qū)域,對其對應的對象的權重按照指定比例進行修改,并保存數(shù)據(jù)

4.IO讀取和保存數(shù)據(jù)

可使用的類很多,但是建議使用字符流的高級流--緩沖流,可以在簡化操作步驟

字符緩沖輸入流:使用readLine()獲取一行的數(shù)據(jù)

字符換種輸出流:使用newLine()進行換行,相較于添加寫入  \r\n要簡便

5.算法實現(xiàn)

1.建立的JavaBean類

package com.prettyspiderList.train;
/**
 * @author prettyspider
 * @ClassName Student
 * @description: TODO
 * @date 2023/8/4 17:28
 * @Version V1.0
 */
public class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    /**
     * 獲取
     * @return name
     */
    public String getName() {
        return name;
    }
    /**
     * 設置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * 獲取
     * @return age
     */
    public int getAge() {
        return age;
    }
    /**
     * 設置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }
    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

2.算法實現(xiàn)

package com.prettyspiderList.Map.train;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
/**
 * @author prettyspider
 * @ClassName test04
 * @description: TODO
 * @date 2023/9/7 21:35
 * @Version V1.0
 */
public class test04 {
    /**
     * txt文件中事先準備號一些學生信息,每個學生的信息獨占一行
     * 要求1:
     *      每次被點到的學生,再次被點到的概率再原先的基礎上降低一半
     *      舉例: 80個學生,點名2次,每次都點到a,概率變化
     *      1: 1.25&
     *      2.a 0.625% 其他人1.2579%
     */
    public static void main(String[] args) throws IOException {
        /**
         * 帶權重的隨機算法:
         *      根據(jù)總權重,獲取每個對象的占比
         *
         */
        //創(chuàng)建student集合
        ArrayList<Student> list = new ArrayList<>();
        // 創(chuàng)建輸入流
        BufferedReader reader = new BufferedReader(new FileReader(".\\com\\prettyspiderList\\Map\\train\\stu.txt"));
        String line;
        while ((line = reader.readLine()) != null) {
            String[] arr = line.split("-");
            list.add(new Student(arr[0], arr[1], Integer.parseInt(arr[2]), Double.valueOf(arr[3])));
        }
        // 關流
        reader.close();
        //計算權重
        // 1.獲取總權重
        double weight = 0.0;
        for (Student stu : list) {
            weight += stu.getWeight();
        }
        // 2.獲取單個權重
        double[] wightArr = new double[list.size()];
        for (int i = 0; i < list.size(); i++) {
            wightArr[i] = list.get(i).getWeight() / weight;
        }
        System.out.println(Arrays.toString(wightArr));
        // 每個的權重占比,其前面一個的權重加自己的權重, 表示的是在這個范圍內是對應的對象
        for (int i = 1; i < wightArr.length; i++) {
            wightArr[i] = wightArr[i] + wightArr[i - 1];
        }
        System.out.println(Arrays.toString(wightArr));
        // 隨機生成一個0-1之間的隨機數(shù)
        Random random = new Random();
        double key = random.nextDouble(1);
        System.out.println(key);
        // 二分查找法:方法返回: 結果=-插入點-1
        // 則插入點=-結果-1
        int index = -Arrays.binarySearch(wightArr, key) -1;
        // 對獲取到的對象的權重減半
        double num = list.get(index).getWeight() / 2;
        list.get(index).setWeight(num);
        System.out.println(list.get(index));
        // 將數(shù)據(jù)協(xié)會到文件中
        BufferedWriter writer = new BufferedWriter(new FileWriter(".\\com\\prettyspiderList\\Map\\train\\stu.txt"));
        for (Student student : list) {
            writer.write(student.toString());
            writer.newLine();
        }
        // 關閉流
        writer.close();
    }
}

到此這篇關于Java實現(xiàn)帶有權重隨機算法的示例詳解的文章就介紹到這了,更多相關Java隨機算法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring的事務管理之聲明式事務詳解

    Spring的事務管理之聲明式事務詳解

    本文介紹了Spring中的事務管理,包括聲明式事務管理和和編程式事務管理,重點講解了聲明式事務管理和Spring AOP的關系,及Spring事務攔截器TransactionInterceptor的調用的,最后還釋了Spring事務的創(chuàng)建和使用的具體過程,以及解決了一些事務相關問題
    2026-05-05
  • java打印指定年月份的日歷

    java打印指定年月份的日歷

    這篇文章主要為大家詳細介紹了java打印指定年、指定月份的日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • ThreadLocal數(shù)據(jù)存儲結構原理解析

    ThreadLocal數(shù)據(jù)存儲結構原理解析

    這篇文章主要為大家介紹了ThreadLocal數(shù)據(jù)存儲結構原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 輕輕松松吃透Java并發(fā)fork/join框架

    輕輕松松吃透Java并發(fā)fork/join框架

    fork/join是一個工具框架 ,本文詳細的介紹了fork/join框架的具體使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺談Spring-boot事件監(jiān)聽

    淺談Spring-boot事件監(jiān)聽

    這篇文章主要介紹了淺談Spring-boot事件監(jiān)聽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 淺談多線程_讓程序更高效的運行

    淺談多線程_讓程序更高效的運行

    下面小編就為大家?guī)硪黄獪\談多線程_讓程序更高效的運行。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot接口返回結果封裝方法實例詳解

    SpringBoot接口返回結果封裝方法實例詳解

    在實際項目中,一般會把結果放在一個封裝類中,封裝類中包含http狀態(tài)值,狀態(tài)消息,以及實際的數(shù)據(jù)。這里主要記錄兩種方式,通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-09-09
  • Java安全之URLDNS鏈使用分析

    Java安全之URLDNS鏈使用分析

    這篇文章主要介紹了Java安全之URLDNS鏈使用分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Presto支持Elasticsearch數(shù)據(jù)源配置詳解

    Presto支持Elasticsearch數(shù)據(jù)源配置詳解

    這篇文章主要為大家介紹了Presto支持Elasticsearch數(shù)據(jù)源配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • java實現(xiàn)圖片滑動驗證(包含前端代碼)

    java實現(xiàn)圖片滑動驗證(包含前端代碼)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)圖片滑動驗證,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論

前郭尔| 白朗县| 从化市| 虹口区| 桓台县| 合肥市| 安达市| 安吉县| 兴安盟| 博野县| 任丘市| 昂仁县| 广汉市| 德安县| 白山市| 绥江县| 钟祥市| 建始县| 临清市| 大冶市| 扬中市| 吐鲁番市| 彰化县| 安顺市| 虹口区| 宾川县| 信阳市| 阳高县| 隆安县| 遵化市| 巴东县| 吉木乃县| 错那县| 九江市| 南溪县| 冀州市| 安福县| 察隅县| 明溪县| 华亭县| 泗水县|