對於無黑洞的隨機遊走問題可以使用線性方程組求解,對於有黑洞的隨機遊走問題就無法使用線性方程組進行求解了。
有黑洞的隨機遊走問題舉例:
隨機遊走問題分類:
(有限空間+無限空間)×(有黑洞+無黑洞)
zhihu
乙個整型數字x=6000,每次增長101的概率為49.32%,每次減少100元的概率為50.68%,問最終x&tt;7000的概率是多少?
顯然,這個問題相當於乙個隨機遊走問題,一共有100~7000共6900個結點,每個結點x有49.32%的概率走向x+101,有50.68%的概率走向x-100,當x<100或者x>=7000時遊戲停止。
import numpy as np
import tensorflow as tf
lose = 0.4932
win = 1 - lose
win_value = 101
lose_value = 100
init_value = 6000
# 閉區間
ceil_value = 7000
floor_value = 100
a = np.zeros((7102, 7102))
for i in range(a.shape[0]):
if ceil_value >= i >= floor_value:
a[i - lose_value, i] = lose
a[i + win_value, i] = win
if not ceil_value >= i >= floor_value:
a[i, i] = 1
a = tf.constant(a, dtype=np.float32)
p = np.zeros((a.shape[0], 1), dtype=np.float32)
p[init_value, 0] = 1
p = tf.variable(p)
assign = tf.assign(p, tf.matmul(a, p))
with tf.session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(100):
sess.run(assign)
print(i)
p_value = sess.run(p)
print(np.sum(p_value[ceil_value:]), np.sum(p_value[floor_value:ceil_value]), np.sum(p_value[:floor_value]))
虧本這麼少,是因為初始狀態給的6000離7000非常近,本錢足夠多,幾乎不會虧本。
這種問題就像是乙個帶黑洞的隨機遊走問題,這個問題有兩個黑洞,乙個是足夠大止盈黑洞乙個是足夠小止損黑洞,而中間部分幾乎是慢慢往兩邊耗散的,最終中間部分應該是趨近於0。就像光線在乙個管子裡面來回反射,最後終將會從管子兩邊射出去,管子裡面變得漆黑一片。由此推出:繼續迴圈的概率這個數字可以看做此迭代結果的準確率指標。
在上面迭代過程中,只是簡單的迭代,實際上可以使用快速冪進行加速。
import numpy as np
import tensorflow as tf
lose = 0.4932
win = 1 - lose
win_value = 101
lose_value = 100
init_value = 6000
# 閉區間
ceil_value = 7000
floor_value = 100
a = np.zeros((7102, 7102))
for i in range(a.shape[0]):
if ceil_value >= i >= floor_value:
a[i - lose_value, i] = lose
a[i + win_value, i] = win
if not ceil_value >= i >= floor_value:
a[i, i] = 1
a = tf.variable(a, dtype=np.float32)
assign = tf.assign(a, tf.matmul(a, a))
with tf.session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(1000):
sess.run(assign)
print(i)
a = sess.run(a)
p = a[:, init_value].reshape(-1)
print("overflow", np.sum(p[ceil_value:]), "loop", np.sum(p[floor_value:ceil_value]), "downflow", np.sum(p[:floor_value]))
Python實現隨機遊走的詳細解釋
注 需要python的內建函式random,不需www.cppcns.com安裝,直接匯入即可 import random coding utf 8 import matplotlib.pyplot as plt import random position 0 設定初始位置 walk 儲存位置 s...
期望 看完一維隨機遊走想到的題目
一開始在數軸0位置,有p概率往右走,q概率往左走,問第一次到達位置n的期望步數 特別的,在0位置有100 機率到達1。有點像裝備強化的事件,或者排位上分?用模擬與數學推導分別算一次結果對拍 假設p 0.75 程式模擬10000000次的均值如下 大數定理,但肯定有誤差 nans11 22.6662 ...
帶權重的隨機演算法
但是,對於這樣的問題,怎樣才能實現這樣的隨機效果呢?直接使用random函式,是不可能做到的。其實相信好多人都已經有實現的思路了,就是產生0 100之間的隨機數,當隨機數在0 70時,就獲得3等獎,70 90是2等獎,90 100是一等獎。一般情況下,這種隨機概率,是通過讀取 或檔案來獲取的,然後儲...