我正在嘗試在 pytorch 中隨機生成整數磁區(N 到 M 部分),最小磁區大小為 1。
例如,(3, 1, 1)and(4, 1, 0)都是 5 分為 3 部分的磁區,但(4, 1, 0)的最小磁區大小為 0,因此不應允許這樣做
我想用它來按需生成我的資料集,如果有 pytorch (parallel/gpgpu) 解決方案,那就太好了。
請參閱有關生成整數磁區的其他問題:
- 在 Python 中將整數 n 的受限弱整陣列合(或磁區)生成 k 部分
- 用于整數磁區的優雅 Python 代碼
uj5u.com熱心網友回復:
這是一個在有限情況下有效的解決方案,M 必須除 N,2 必須除 M,最大值是有限的,但這是我想要的行為。
你從相等的磁區開始,然后計算一個總和為零的增量......
M = 4
N = 16
MINIMUM = 1
assert N % M == 0
assert M % 2 == 0
avg = N // M
equal_partition = torch.full((M,), avg)
half_delta = torch.randint(-(avg-MINIMUM), avg-MINIMUM, (M // 2,))
delta = torch.cat((half_delta, -half_delta), dim=-1)[torch.randperm(M)]
partition = equal_partition delta
print(partition, partition.sum())
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479299.html
上一篇:投資組合動態規劃的背包問題和回溯
下一篇:如何為這個游戲制作演算法?
