散戶炒股票為啥總賠錢?李永樂老師用數學告訴你原因~


看了個視頻:《散戶炒股票為啥總賠錢?李永樂老師用數學告訴你原因~》(https://weibo.com/3325704142/Gecagg1CK)

根據視頻中得出的結論,寫了小段代碼認證下結論是否正確,經過認證,還真是如此,奇幻!

 

大概就是,兩人拋硬幣對賭,規則如下:

1)A=正面 B=正面 :A贏3;

2)A=反面 B=反面 :A贏1;

3)其他情況:B贏2;

一個看似公平的游戲,但是如果A將出A面的幾率控制在 1/3 ~ 2/5的時候,B贏錢的幾率會接近於0~

 

大家可以在這個在線代碼(https://tour.golang.org/)運行網站中測試下下面這個代碼:

package main

import (
	"fmt"
	"math/rand"
	"time"
)

var min, max float64

func RandomInt(max int) int {
	rand.Seed(time.Now().UnixNano())
	return rand.Intn(max) + 1
}

func manT() int {
	return RandomInt(2)
}

// 1:正面 2:反面
func womanT() int {
	//先獲取一個概率,概率在 1/3 ~ 2/5 之間
	var p float64
	for p < min || p > max {
		p = float64(RandomInt(100)) / 100.0
	}
	//fmt.Printf("Probability: %.2f\n", p)

	//將概率*100,得到一個分水嶺數字,比如35
	var P int = int(100 * p)

	//然后隨機獲取一個數字
	//如果大於P(比如:35),那么拋出反面(2);反之拋出正面(1)
	v := RandomInt(100)
	if v > P {
		return 2
	}
	return 1

}

func main() {
	min, max = 1.0/3.0, 2.0/5.0
	fmt.Println(min, max)
	wm := make(map[int]int)

	var man_money int = 0
	var woman_money int = 0
	for i := 0; i < 100; i++ {
		n1 := womanT()
		n2 := manT()
		wm[n1]++ //記錄美女所拋硬幣

		switch {
		case n1 == 1 && n2 == 1:
			man_money += 3
			woman_money -= 3
		case n1 == 2 && n2 == 2:
			man_money += 1
			woman_money -= 1
		default:
			man_money -= 2
			woman_money += 2
		}
	}

	fmt.Println("玩了100次,美女拋出 '正面' 和 '反面' 的次數和概率如下:")
	fmt.Printf("正面 次數:%d 概率: %.2f\n", wm[1], float64(wm[1])/100.0)
	fmt.Printf("反面 次數:%d 概率: %.2f\n", wm[2], float64(wm[2])/100.0)

	fmt.Println("男子和美女所得金額如下:")
	fmt.Println("Man: ", man_money)
	fmt.Println("Woman: ", woman_money)
}

  

 

跑了幾次,只要美女控制住概率,發現果然都是美女在贏錢!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM