gpt4 book ai didi

java - 根据特定要求创建随机数字串

转载 作者:行者123 更新时间:2023-11-30 08:42:08 24 4
gpt4 key购买 nike

我想创建一个随机的数字字符串。

  • 从 0 到 9。
  • 10 位数字。
  • 第一个数字不能是 0。
  • 其中一个数字必须在字符串中出现 2 次,而一个数字必须根本不存在。
  • 或者一个数字必须出现 3 次,而另外 2 个数字根本不能出现。

为了使这一点更清楚一些,这里有一些例子:

1223456789 - 10 位数字,没有起始零,一位数字 (2) 出现了 2 次,一位数字 (0) 根本不存在

1000345678 - 10 位数字,没有起始零,一位数字 (0) 出现 3 次,两位数字 (2,9) 根本不存在

起始零很容易用 startsWith - 方法捕获,但我还没有找到检查其余部分的方法,而且我不是特别擅长正则表达式,同时我也不完全确定你甚至可以使用正则表达式来做到这一点。

为了生成随机字符串本身,我使用了 Random 类和 RandomStringUtils,它们都没有创建数字的限制。

你们中有人知道如何实现这一点吗?

最佳答案

假设你有 10 个麻袋,每个麻袋上都绣有相应的数字,从 0 到 9,如下所示:

   .---.._                  
{------';
}====={
.´ '.
/ .´| \ inside there are
| | | <--- stones with '1' engraved
\: _|_ /
-__ =.´

您手上还有一枚硬币可以抛正面或反面。

       .------..-                  
´ . /___ `.`.
; / / ´} ; ; ______________________________
: "|'__' // : : / |
' .|/__\. } \ ' ' /_ HEAD! You shall pick 3 |
' /"../ ' ' | stones from the 1st sack! |
; / \/ ͷ ; ; \____________________________/
`_/ ´ ´
" -------´-´

首先,我们将决定是否有 3 个重复数字或 2 个重复数字。抛硬币决定! Tail 是 3,Head 是 2。我们称这个结果为ͷ。

暂时将绣有 0(零)的麻袋取下。

现在从您面前的 9 袋随机袋中挑选 ͷ(2 或 3)颗 gem 。请记住,您不能从 0 开始,这就是我们暂时删除它的原因!永远从一排麻袋中取出你刚刚挑选的那个麻袋。你不能再从这个中挑选了。放回线上的 0(零)麻袋。

将您刚刚拾取的其中一颗石头放在自己面前。把ͷ-1拿在手里。

现在重复此操作,直到您手中有 9 颗 gem :

Select a random sack, pick ONE stone from it and hold it in your hand. Remove the sack from the line.

到此过程结束时,您手中将有 9 颗 gem ,其中一颗在您面前。将手中的牌洗牌。将它们放在您面前的一条直线上,靠近已经在您面前的石头。

您将以 10 个数字结束,ͷ 重复相同的数字,不会从零开始,您面前剩余的袋子只是沿途移除袋子的副作用。

关于java - 根据特定要求创建随机数字串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34668543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com