鱼C论坛

 找回密码
 立即注册
查看: 841|回复: 17

[已解决]关于随机排列

[复制链接]
发表于 2018-11-29 17:10:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何生成一个'H','T'随机排列n次的字符串 微信截图_20181129181338.png
最佳答案
2018-11-29 17:19:27
  1. from random import choice
  2. n=int(input('输入一个正整数'))
  3. s=''
  4. for i in range(n):
  5.     s+=choice(('H','T'))
  6. print(s)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-29 17:18:30 | 显示全部楼层
  1. import random
  2. a=['H','T']
  3. def suijipailie(n):
  4.     k=list(random.choice(a) for _ in range(n))
  5.     print(''.join(k))
  6. suijipailie(10)
复制代码

我这里的n是10,你想要几次就把这个数字改了就行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-11-29 17:19:27 | 显示全部楼层    本楼为最佳答案   
  1. from random import choice
  2. n=int(input('输入一个正整数'))
  3. s=''
  4. for i in range(n):
  5.     s+=choice(('H','T'))
  6. print(s)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 17:25:48 | 显示全部楼层
  1. from random import choices
  2. n=int(input('输入一个正整数'))
  3. print(''.join(choices(('H','T'),k=n)))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 17:37:51 | 显示全部楼层
本帖最后由 喜欢吃菠菜 于 2018-11-29 17:40 编辑
  1. from random import randint
  2. f=lambda n:''.join('TH'[randint(0,1)] for i in range(n))
  3. f(int(input('请输入一个整数:')))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 17:39:14 | 显示全部楼层

这个k=n我也是第一次遇到,好吧,学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 17:44:06 | 显示全部楼层

你的代码也是让我眼前一亮。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 17:59:38 | 显示全部楼层
fan1993423 发表于 2018-11-29 17:44
你的代码也是让我眼前一亮。

互相学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-29 20:01:38 | 显示全部楼层

大神还有一个问题,怎么让n>num2-1跳出本次循环。如图我想让h连续出现三次时heads+1,但是大于三次是时不计入。
import random
num1 = int(input('Enter the number of times of tossing a coin: '))
num2 = int(input('Enter the number of consecutive outcomes to find: '))
s = ''.join(random.choice(['H','T']) for i in range(num1))
n = 0
heads = 0
tails = 0
for i in range(len(s)-1):
    if s[i] == s[i+1]:
        n += 1
    else:
        n = 0
    if n == num2-1:
        if 'H' in s[i]:
            heads += 1
        else:
            tails += 1
        continue
print(s)
print(heads)
print(tails)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 20:04:33 | 显示全部楼层
zby0709 发表于 2018-11-29 20:01
大神还有一个问题,怎么让n>num2-1跳出本次循环。如图我想让h连续出现三次时heads+1,但是大于三次是时不 ...

没看懂你heads,tails都想做什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-29 20:09:35 | 显示全部楼层
塔利班 发表于 2018-11-29 20:04
没看懂你heads,tails都想做什么

就是当 h 连续出现 3次时,heads+=1。统计h和t 3次连续出现的频率。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-29 20:10:37 | 显示全部楼层
塔利班 发表于 2018-11-29 20:04
没看懂你heads,tails都想做什么

刚才忘记放图了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 20:20:14 | 显示全部楼层
  1. import random
  2. from itertools import groupby
  3. num1 = int(input('Enter the number of times of tossing a coin: '))

  4. s = ''.join(random.choice(['H','T']) for i in range(num1))
  5. print(s)
  6. heads=tails=0
  7. for k,g in groupby(s):
  8.     if len(list(g))==3:
  9.         if k=='H':
  10.             heads+=1
  11.         else:
  12.             tails+=1
  13. print(f'heads:{heads},tails:{tails}')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-29 20:30:12 | 显示全部楼层

groupby是什么意思?还没学过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 20:32:40 | 显示全部楼层
zby0709 发表于 2018-11-29 20:30
groupby是什么意思?还没学过

按相邻相同分组
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-29 20:35:21 | 显示全部楼层

以为加一个n>num2-1的条件就行了,没想到这么复杂。。。
有别的方法吗大神。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-29 20:38:35 | 显示全部楼层
有,但是不想写了,跟你的类似,但是要各种判断重置
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-29 20:55:21 | 显示全部楼层
塔利班 发表于 2018-11-29 20:38
有,但是不想写了,跟你的类似,但是要各种判断重置

可以告诉我应该加在那个位置么大神?辛苦了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-1 04:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表