如何在不使用“If”的情况下随机选择一个数字?

时间:2018-03-03 13:14:39

标签: python python-3.x

基本上,我在Python(3)中乱搞,我正在尝试定义一些函数来在单行中执行一些常见任务,使用尽可能少的内存

例如,在视频游戏中,您可能希望角色左/右转,但不是0度。那么,给定一个整数x,你怎么能在-x和+ x'(包括)之间返回一个不是0的随机整数?

注意,我打算使用最小内存的单行。

我正在发布答案,但我也想知道其他人会如何处理这个问题。

编辑:这不是学校的家庭作业或任何东西,我只是设计一个视频游戏并定义一些将派上用场的功能。我说没有'如果是因为我想知道是否可能,如果是,那怎么样。

谢谢: - )

3 个答案:

答案 0 :(得分:6)

我建议:

import random

def randint_between(x):
    return random.choice([-1, 1]) * random.randint(1, x)

答案 1 :(得分:0)

我会用:

import random

def between(x):
    return ((((random.randint(0, 1) * 2) - 1) * random.randint(1, x))

答案 2 :(得分:0)

random.sample使用的范围与它们提供的数字范围相比非常小。

这将在1和x之间创建一个正数,并将其与1或-1相乘。

import random

def between(x):
    return random.sample(range(1, x+1),k=1)[0] * (-2*random.randint(0,1)+1)

在看了kch回答之后,我可能会采取他的方法。