Python 我如何增加某件事发生的概率百分比?

Python 我如何增加某件事发生的概率百分比?,python,Python,例如,我有 import random TimeAdj = ("New", "Old") adj = ("fancy", "elegant") place = ("street", "market") print random.choice(TimeAdj) + ' ' + random.choice(adj) + ' ' + random.choice(place) 但是我希望{adj}有60%的机会发生(不加空格),我怎么做?这将选择(对于形容词位置)空字符串或从其中一个形容词中随机选

例如,我有

import random

TimeAdj = ("New", "Old")
adj = ("fancy", "elegant")
place = ("street", "market")

print random.choice(TimeAdj) + ' ' + random.choice(adj) + ' ' + random.choice(place)
但是我希望{adj}有60%的机会发生(不加空格),我怎么做?

这将选择(对于形容词位置)空字符串或从其中一个形容词中随机选择

import random

TimeAdj = ("New", "Old")
adj = ("fancy", "elegant")
place = ("street", "market")

print random.choice(TimeAdj) + random.choice(('',' ' + random.choice(adj))) + ' ' + random.choice(place)

<>你想考虑的一个常见模式是在打印语句之前建立要打印的字符串。

import random

TimeAdj = ("New", "Old")
adj = ("fancy", "elegant")
place = ("street", "market")

string = random.choice(TimeAdj) + ' ' 
if random.random() < 0.5:
    string += random.choice(adj)
    string += ' '
string += random.choice(place)

print string
随机导入
TimeAdj=(“新”、“旧”)
形容词=(“花哨”、“优雅”)
地点=(“街道”、“市场”)
字符串=随机选择(TimeAdj)+”
如果random.random()<0.5:
字符串+=随机选择(adj)
字符串+=''
字符串+=随机。选择(位置)
打印字符串
这里的百分比是50%,但可以修改为您想要的任何百分比


另外,不要在字符串上使用+=,您需要了解我在C#中开发的聊天机器人需要类似的功能。如果她的反应稍有不同,她似乎更人性化。我通过创建一个模型来解决这个问题,以允许分阶段编写完整的响应

我试图通过创建一个精简版本来解决您的问题。如果你只需要将概率固定在50%,那么nbryan的解决方案就行了,但是如果你想把概率稍微提高一点,这将帮助你解决问题

import random


class RandomStringBuilder(object):
    def __init__(self):
        self._string_parts = []

    def with_raw(self, string):
        self._string_parts.append(string)
        return self

    def from_any(self, *phrases, chance=1.0, prefix=' '):
        if random.random() < chance:
            self._string_parts.append(prefix + random.choice(phrases))

        return self

    def __repr__(self):
        return ''.join(self._string_parts)


if __name__ == '__main__':
    builder = RandomStringBuilder()
    print(builder\
        .with_raw('Hey, this is an example of a')\
        .from_any('terrible', 'bad', 'good', 'great', chance=0.7)\
        .with_raw(' solution to your problem'))

+random.choice((“”,“”+random.choice(adj))+
我为我正在编写的聊天机器人做了类似的事情。遗憾的是它是在C#中。@nbryan的轻微修改:
…+随机选择(“,”+随机选择(adj))+…
这是正确的,但可能会导致单词之间的间距不均匀。谢谢你的评论,我修复了它。你看到了什么@Tagc?如果我想让它有70%的话怎么办?