首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >随机选择一个字符,plinko样式

随机选择一个字符,plinko样式
EN

Code Golf用户
提问于 2017-07-17 15:11:22
回答 24查看 3.6K关注 0票数 27

让我们看看你所选择的语言在选择性随机性上有多好。

给定4个字符( ABCD )或4个字符( ABCD )的字符串作为输入,输出其中一个字符的概率如下:

  • A应该有1/8 (12.5%)的机会被选中
  • B应该有3/8 (37.5%)的机会被选中
  • C应该有2/8 (25%)的机会被选中
  • D应该有2/8 (25%)的机会被选中

这与以下普林科机器布局是一致的:

代码语言:javascript
代码运行次数:0
运行
复制
   ^
  ^ ^
 ^ ^ ^
A B \ /
     ^
    C D

你的回答必须真心实意地尊重所描述的概率。一个正确的解释,如何计算概率在你的答案(以及为什么他们尊重规格,无视伪随机和大数问题)是足够的。

评分

这是密码-高尔夫,所以在每种语言中最少的字节获胜!

EN

回答 24

Code Golf用户

发布于 2017-07-17 15:20:14

果冻,6 字节数

代码语言:javascript
代码运行次数:0
运行
复制
Ḋṁ7;ḢX

一种一元链接,包含四个字符的列表,并以所描述的概率分布返回一个字符。

在网上试试!

怎么做?

代码语言:javascript
代码运行次数:0
运行
复制
Ḋṁ7;ḢX - Link: list of characters, s  e.g. ABCD
Ḋ      - dequeue s                         BCD
 ṁ7    - mould like 7 (implicit range)     BCDBCDB
    Ḣ  - head s                            A
   ;   - concatenate                       BCDBCDBA
     X - random choice                     Note that the above has 1*A, 3*B, 2*C, and 2*D
票数 9
EN

Code Golf用户

发布于 2017-07-17 15:30:34

Python,50字节

代码语言:javascript
代码运行次数:0
运行
复制
lambda x:choice(x[:2]+x[1:]*2)
from random import*

一个未命名的函数,接受并返回字符串(或字符列表)。

在网上试试!

怎么做?

random.choice从列表中选择一个随机元素,因此函数形成一个具有正确分布的字符串,即给定"ABCD""ABCD"[:2] = "AB" + "ABCD"[1:]*2 = "BCD"*2 = "BCDBCD" (即"ABBCDBCD" )。

票数 8
EN

Code Golf用户

发布于 2017-07-17 16:11:49

PHP,28字节

代码语言:javascript
代码运行次数:0
运行
复制
<?=$argn[5551>>2*rand(0,7)];

使用-nR作为管道运行。

01112233在基数-4是5551在十进制.

票数 6
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/132877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档