帶黑洞的隨機遊走問題

2021-09-07 19:58:57 字數 2507 閱讀 7594

對於無黑洞的隨機遊走問題可以使用線性方程組求解,對於有黑洞的隨機遊走問題就無法使用線性方程組進行求解了。

有黑洞的隨機遊走問題舉例:

隨機遊走問題分類:

(有限空間+無限空間)×(有黑洞+無黑洞)

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是一等獎。一般情況下,這種隨機概率,是通過讀取 或檔案來獲取的,然後儲...