相关疑难解决方法(0)

从集合中挑选一个随机元素

如何从集合中选择随机元素?我特别感兴趣的是从Java中的HashSet或LinkedHashSet中选择一个随机元素.也欢迎其他语言的解决方案.

java language-agnostic random algorithm set

170
推荐指数
10
解决办法
18万
查看次数

在python中,set.pop()是否确定?

我知道python集的元素没有排序.调用pop方法返回一个任意元素; 我很好.

我想知道的是,当集合具有相同的历史记录时,pop是否总是会返回相同的元素.当然,在python的一个版本中,我不介意python的不同版本/实现是否有自己的功能.特别是,我问的是python 2.7.在这种情况下,这不仅仅是api的实现问题.

我在游戏的程序性地牢生成器中使用了很多集合,我希望结果对于给定的种子是确定性的.

python set

18
推荐指数
2
解决办法
9173
查看次数

在Python3.6 +中从集合中弹出随机元素的最Pythonic方法是什么?

在3.6之前我会简单地使用set.pop().现在,集合是有序的,并且pop总是从头开始删除.

您认为最pythonic的方式是什么?

我不确定我的感受set.remove(random.sample(set, 1)[0]).

python

14
推荐指数
1
解决办法
3181
查看次数

Python数据结构,用于高效添加,删除和random.choice

我正在寻找一个内置的Python数据结构,它可以add包含一个新元素,remove一个现有元素,并选择一个随机元素,所有这些都比O(n)时间好.

我希望set可以做到这一点,但AFAIK,从Python集中选择随机元素的唯一方法是random.choice(list(my_set)),花费O(n)时间.

我更倾向于使用内置于Python的解决方案,因为我需要高效且易于部署.不幸的是,Python似乎没有内置的树数据类型.

python data-structures

7
推荐指数
1
解决办法
2339
查看次数

“dict_keys”对象不可下标

我正在random用这个例子在 Python 3 上学习函数,得到一个错误作为帖子标题。'dict_keys' object is not subscriptable. 我不确定我哪里做错了dictionary

import random
outcomes = {
        'heads':0, 
        'tails':0
        }

sides = outcomes.keys()

for i in range(100):
    outcomes[random.choice(sides)] += 1

print("Heads:", outcomes['heads'])
print("Tails:", outcomes['tails'])
Run Code Online (Sandbox Code Playgroud)

下面是错误输出

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-f58aad35f1b0> in <module>
      8 
      9 for i in range(100):
---> 10     outcomes[random.choice(sides)] += 1
     11 
     12 print('Heads:', outcomes['heads'])

C:\ProgramData\Anaconda3\lib\random.py in choice(self, seq)
    260         except ValueError:
    261             raise IndexError('Cannot choose from an empty sequence') from None …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

0
推荐指数
1
解决办法
2917
查看次数