I am using something similar to this method.
Code: Select all
if [F(i-1) < r =< F(i)] then
pick move i
end if
Code: Select all
def search_move_num(d, f):
"""
Search the move number based on generated random number.
"""
move_num = 0
max_tries = 10
tries = 0
# Don't return unless we get the move number.
while True:
if tries >= max_tries:
break
tries += 1
# Generate random number between the min and max of f.
# print(f'min: {min(f)}, max: {max(f)}')
r = random.uniform(min(f), max(f))
r = round(r, 4)
# print(f'info string random number {r}')
found = False
for i in range(len(d)):
if i == len(d) - 1:
break
low = f[i]
high = f[i+1]
if low >= r >= high or low <= r <= high:
move_num = i
found = True
break
if found:
break
print('info string failed to get move num, generate random number again...')
return move_num + 1, r
[Site "?"]
[Date "2020.12.31"]
[Round "?"]
[White "ferdi"]
[Black "Guided v1.0.0"]
[Result "*"]
[BlackElo "2000"]
[ECO "B21"]
[Opening "Sicilian"]
[Time "21:41:04"]
[Variation "Smith-Morra, 1.e4 c5 2.d4 cxd4"]
[WhiteElo "2400"]
[TimeControl "180+2"]
[Termination "unterminated"]
[PlyCount "32"]
[WhiteType "human"]
[BlackType "program"]
1. e4 c5 2. d4 cxd4 3. Qxd4 a6 4. Nf3 b6 5. c4 Bb7 6. Nc3 e6 7. Be3 Nf6 8.
e5 Bc5 9. Qd2 Ne4 10. Nxe4 Bxe4 11. Be2 Bg6 12. O-O Nc6 13. Bxc5 bxc5 14.
Qe3 Qb8 15. Qxc5 Qxb2 16. Rfe1 h6 *[/pgn]
That b6 move is top 8, weak but not weird.
Code: Select all
2020-12-31 21:42:03.891<--1:info string move number 8 random number 0.8342
2020-12-31 21:42:03.898<--1:bestmove b7b6
Code: Select all
2020-12-31 21:46:28.728<--1:info string move number 4 random number 0.3514
2020-12-31 21:46:28.734<--1:bestmove h7h6
2020-12-31 21:41:20.116-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4
2020-12-31 21:41:20.120-->1:go wtime 181579 btime 184000 winc 2000 binc 2000
2020-12-31 21:41:36.642<--1:info string move number 5 random number 0.6577
2020-12-31 21:41:36.649<--1:bestmove a7a6
2020-12-31 21:41:36.656*1*Found move:a7-a6
2020-12-31 21:41:46.507*1*Start calc, move no: 7
2020-12-31 21:41:46.517-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3
2020-12-31 21:41:46.524-->1:go wtime 174032 btime 169473 winc 2000 binc 2000
2020-12-31 21:42:03.891<--1:info string move number 8 random number 0.8342
2020-12-31 21:42:03.898<--1:bestmove b7b6
2020-12-31 21:42:03.904*1*Found move:b7-b6
2020-12-31 21:42:07.881*1*Start calc, move no: 9
2020-12-31 21:42:07.891-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4
2020-12-31 21:42:07.896-->1:go wtime 172329 btime 154103 winc 2000 binc 2000
2020-12-31 21:42:25.835<--1:info string move number 3 random number 0.4551
2020-12-31 21:42:25.841<--1:bestmove c8b7
2020-12-31 21:42:25.847*1*Found move:Bc8-b7
2020-12-31 21:42:29.618*1*Start calc, move no: 11
2020-12-31 21:42:29.627-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3
2020-12-31 21:42:29.632-->1:go wtime 170829 btime 138171 winc 2000 binc 2000
2020-12-31 21:42:47.886<--1:info string move number 3 random number 0.4503
2020-12-31 21:42:47.894<--1:bestmove e7e6
2020-12-31 21:42:47.902*1*Found move:e7-e6
2020-12-31 21:42:52.364*1*Start calc, move no: 13
2020-12-31 21:42:52.375-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3
2020-12-31 21:42:52.380-->1:go wtime 168641 btime 121910 winc 2000 binc 2000
2020-12-31 21:43:10.713<--1:info string move number 1 random number 0.4379
2020-12-31 21:43:10.720<--1:bestmove g8f6
2020-12-31 21:43:10.728*1*Found move:Ng8-f6
2020-12-31 21:43:27.561*1*Start calc, move no: 15
2020-12-31 21:43:27.571-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5
2020-12-31 21:43:27.576-->1:go wtime 154313 btime 105571 winc 2000 binc 2000
2020-12-31 21:43:45.776<--1:info string move number 1 random number 0.3987
2020-12-31 21:43:45.783<--1:bestmove f8c5
2020-12-31 21:43:45.789*1*Found move:Bf8-c5
2020-12-31 21:43:53.997*1*Start calc, move no: 17
2020-12-31 21:43:54.007-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2
2020-12-31 21:43:54.014-->1:go wtime 148376 btime 89358 winc 2000 binc 2000
2020-12-31 21:44:11.891<--1:info string move number 1 random number 0.4728
2020-12-31 21:44:11.898<--1:bestmove f6e4
2020-12-31 21:44:11.904*1*Found move:Nf6-e4
2020-12-31 21:44:17.038*1*Start calc, move no: 19
2020-12-31 21:44:17.047-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2 f6e4 c3e4
2020-12-31 21:44:17.053-->1:go wtime 145533 btime 73472 winc 2000 binc 2000
2020-12-31 21:44:34.436<--1:info string move number 1 random number 0.3805
2020-12-31 21:44:34.442<--1:bestmove b7e4
2020-12-31 21:44:34.449*1*Found move:Bb7xe4
2020-12-31 21:44:41.273*1*Start calc, move no: 21
2020-12-31 21:44:41.281-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2 f6e4 c3e4 b7e4 f1e2
2020-12-31 21:44:41.287-->1:go wtime 141018 btime 58086 winc 2000 binc 2000
2020-12-31 21:44:58.039<--1:info string move number 5 random number 0.3527
2020-12-31 21:44:58.046<--1:bestmove e4g6
2020-12-31 21:44:58.054*1*Found move:Be4-g6
2020-12-31 21:45:10.974*1*Start calc, move no: 23
2020-12-31 21:45:10.983-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2 f6e4 c3e4 b7e4 f1e2 e4g6 e1g1
2020-12-31 21:45:10.989-->1:go wtime 130393 btime 43325 winc 2000 binc 2000
2020-12-31 21:45:26.992<--1:info string move number 1 random number 0.3447
2020-12-31 21:45:26.998<--1:bestmove b8c6
2020-12-31 21:45:27.004*1*Found move:Nb8-c6
2020-12-31 21:45:36.103*1*Start calc, move no: 25
2020-12-31 21:45:36.111-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2 f6e4 c3e4 b7e4 f1e2 e4g6 e1g1 b8c6 e3c5
2020-12-31 21:45:36.116-->1:go wtime 123596 btime 29330 winc 2000 binc 2000
2020-12-31 21:45:51.280<--1:info string move number 1 random number 0.3985
2020-12-31 21:45:51.286<--1:bestmove b6c5
2020-12-31 21:45:51.291*1*Found move:b6xc5
2020-12-31 21:45:55.806*1*Start calc, move no: 27
2020-12-31 21:45:55.815-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2 f6e4 c3e4 b7e4 f1e2 e4g6 e1g1 b8c6 e3c5 b6c5 d2e3
2020-12-31 21:45:55.821-->1:go wtime 121377 btime 16163 winc 2000 binc 2000
2020-12-31 21:46:08.649<--1:info string move number 2 random number 0.5475
2020-12-31 21:46:08.656<--1:bestmove d8b8
2020-12-31 21:46:08.663*1*Found move:Qd8-b8
2020-12-31 21:46:17.975*1*Start calc, move no: 29
2020-12-31 21:46:17.985-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2 f6e4 c3e4 b7e4 f1e2 e4g6 e1g1 b8c6 e3c5 b6c5 d2e3 d8b8 e3c5
2020-12-31 21:46:17.990-->1:go wtime 114361 btime 5325 winc 2000 binc 2000
2020-12-31 21:46:22.148<--1:info string move number 1 random number 0.8668
2020-12-31 21:46:22.154<--1:bestmove b8b2
2020-12-31 21:46:22.160*1*Found move:Qb8xb2
2020-12-31 21:46:26.277*1*Start calc, move no: 31
2020-12-31 21:46:26.286-->1:position startpos moves e2e4 c7c5 d2d4 c5d4 d1d4 a7a6 g1f3 b7b6 c2c4 c8b7 b1c3 e7e6 c1e3 g8f6 e4e5 f8c5 d4d2 f6e4 c3e4 b7e4 f1e2 e4g6 e1g1 b8c6 e3c5 b6c5 d2e3 d8b8 e3c5 b8b2 f1e1
2020-12-31 21:46:26.291-->1:go wtime 112549 btime 3173 winc 2000 binc 2000
2020-12-31 21:46:28.728<--1:info string move number 4 random number 0.3514
2020-12-31 21:46:28.734<--1:bestmove h7h6
2020-12-31 21:46:28.739*1*Found move:h7-h6