一個帶有權重的隨機選擇器
隨便寫了一個帶有權重的隨機選擇器,test已經跑過了,但是還沒上線測試。
可以用來從幾個帶有權重的選項中選擇一個。
場景類似用來取nginx的upstream、 用來抽獎或者用來作弊。
package main
import (
"log"
"github.com/go-ego/murmur"
"github.com/qiuker521/weightedrand"
)
func main() {
log.Println("隨機選一個語言")
選語言()
log.Println("使用一致性hash作弊")
一致性雜湊()
}
func 選語言() {
c := weightedrand.Chooser{}
var choices = []weightedrand.Choice{}
choices = append(choices, weightedrand.Choice{"java", 0})
choices = append(choices, weightedrand.Choice{"rust", 0})
choices = append(choices, weightedrand.Choice{"python", 1})
choices = append(choices, weightedrand.Choice{"go", 9})
c.NewChooser(choices...)
for i, v := range choices {
log.Println("選項", i+1, ":", v.Item)
}
log.Println("我應該學", c.Pick(), "語言")
}
func 一致性雜湊() {
c := weightedrand.Chooser{}
var choices = []weightedrand.Choice{}
choices = append(choices, weightedrand.Choice{"java", 1})
choices = append(choices, weightedrand.Choice{"rust", 1})
choices = append(choices, weightedrand.Choice{"python", 1})
choices = append(choices, weightedrand.Choice{"go", 1})
for i, v := range choices {
log.Println("選項", i+1, ":", v.Item, "權重:", v.Weight)
}
c.NewChooser(choices...)
var hash = "一致性雜湊永遠會選java"
log.Println("然而事實上是:雖然不作弊,但是", hash)
log.Println("不信的話我選擇給你看:", c.PickByHash(float64(murmur.Sum32(hash))))
}
執行結果:
2019/04/23 00:57:51 隨機選一個語言
2019/04/23 00:57:51 選項 1 : java
2019/04/23 00:57:51 選項 2 : rust
2019/04/23 00:57:51 選項 3 : python
2019/04/23 00:57:51 選項 4 : go
2019/04/23 00:57:51 我應該學 go 語言
2019/04/23 00:57:51 使用一致性hash作弊
2019/04/23 00:57:51 選項 1 : java 權重: 1
2019/04/23 00:57:51 選項 2 : rust 權重: 1
2019/04/23 00:57:51 選項 3 : python 權重: 1
2019/04/23 00:57:51 選項 4 : go 權重: 1
2019/04/23 00:57:51 然而事實上是:雖然不作弊,但是 一致性雜湊永遠會選java
2019/04/23 00:57:51 不信的話我選擇給你看: java
相關文章
- css選擇器權重和超越`!important`CSSImport
- css 選擇器及權重筆記CSS筆記
- CSS 選擇器權重計算規則CSS
- 12.8學習日報(背景簡寫、選擇器繼承性、選擇器的權重)繼承
- sample, choices: 從list中隨機選擇無重複的元素隨機
- CSS 選擇器權值CSS
- css選擇器權值CSS
- TSM的磁帶選擇機制
- CSS 基礎(盒模型、選擇器、權重、優先順序)CSS模型
- MySQL如何選擇隨機記錄?有好幾種方式呢!MySql隨機
- CSS 選擇器 - 帶例項CSS
- css選擇器,帶例項CSS
- 一個選擇器工具。測試結構偽類選擇器方法
- python如何隨機選擇幾個字串並輸出Python隨機字串
- 權重隨機演算法的java實現隨機演算法Java
- [隨機數詳解]生成一個隨機數,生成指定範圍的隨機數及隨機陣列去重隨機陣列
- 選擇和配置一個專案優先權分級選擇系統(轉)
- css 選擇器效能的取捨。和大量標籤帶有都是classCSS
- 重學前端筆記22-css 選擇器機制前端筆記CSS
- l轉:TSM的磁帶選擇機制
- 生成14個可重複一次的隨機數隨機
- php生成一個可選位數的隨機碼PHP隨機
- CSS選擇器(一)CSS
- vue 手寫一個時間選擇器Vue
- 編寫一個程式,獲取10個1至20的隨機數,要求隨機數不能重複。隨機
- 面試中常問的有關隨機選取k個數的總結面試隨機
- 002---選擇器(標籤選擇器、類選擇器、id選擇器、偽類選擇器、萬用字元選擇器)字元
- jQuery選擇器介紹:基本選擇器、層次選擇器、過濾選擇器、表單選擇器jQuery
- 直播帶貨原始碼,日期時間選擇器 選擇範圍限制原始碼
- jQuery選擇器——基本選擇器jQuery
- 選擇千鋒php,給自己一個機會PHP
- 自定義一個仿拼多多地址選擇器
- 如何快速實現一個顏色選擇器
- jQuery雙色器隨機選號jQuery隨機
- javascript隨機從陣列中選出一個元素JavaScript隨機陣列
- 基本CSS選擇器,複合選擇器,後代選擇器CSS
- 一個帶有Redux狀態管理的本機元件(計數器)的Github專案Redux元件Github
- jQuery選擇器——層次選擇器jQuery