1
pabupa 2018-01-26 13:45:49 +08:00
…………
|
2
aksoft 2018-01-26 13:47:18 +08:00
…………
|
3
zenxds 2018-01-26 13:49:05 +08:00 1
先生成字母,5 加进去乱序一下不就完了
|
4
MinQ 2018-01-26 13:52:44 +08:00 1
先生成一个 30-34 之间的数字 length,然后生成一个长度为 length 的字符串,由 A-Z 组成,最后看缺几个字符,再随机几次把 5 插进去就行了
|
5
widdy 2018-01-26 13:53:10 +08:00 1
你这逻辑都奇怪,主要由 A-Z 组成,又有 5,这不都矛盾的表述,你先把范围确定,然后就从中每次 rand 出来一个,最后在检测有没有 5,5 的次数超过五个没,不符合要求就重新生成得了;
|
6
sunsulei 2018-01-26 13:54:28 +08:00 1
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5
类似这种也是可以的吗? 如果必须要出现 26 个全字母然后加一个随机 1/<=5 个 5 的话 生成随机的 26 个字母的串 再随机 1/<=5 个位置 塞 5 好像也是可以的.. 但是估计 .... 得每次判重了.. |
7
iblessyou 2018-01-26 13:58:39 +08:00 1
描述的不清晰,最多 5 个 5,加 26=31,字符串 35,也就是字母没次数限制也是随机?如果这样的话
1 先随出 5 的次数 N,将 N 个 5 放入随机池; 2 随机在 26 个字母中取 36-N 次,将取到的字母放入随机池; 3 在随机池里随机取出所有字符组成字符串 |
8
mengyaoss77 2018-01-26 14:03:17 +08:00 3
1 生成长度为 35 的 A-Z 随机字符串
2 生成数字 5 出现的次数 3 生成数字 5 出现的位置 4 替换 |
9
xzc0001 2018-01-26 14:23:34 +08:00 1
生成长度 35 的字符串
随机 5 次位置用数字 5 替换 结束。 |
10
beshe 2018-01-26 15:29:24 +08:00 1
python code:
import string, random x = random.randint(30, 35) chars=[random.choice(string.ascii_uppercase) for i in xrange(x) ] + [(str(5)) for i in xrange(35-x)] random.shuffle(chars) print "".join(chars) |
11
873681136 2018-01-26 15:50:13 +08:00 1
1. 随机数字 5 的个数 n
2. 随机长度为 35-n 的随机字符串 A-Z,在末尾添加长度为 n 的字符串 5 3. 使用 shuffle 算法打乱 |
12
no1xsyzy 2018-01-26 17:02:00 +08:00 1
如果先随机长度,P("A"*30+"5"*5)不等于 P("A"*31+"5"*4)
|
13
bxb100 2018-01-27 13:45:39 +08:00 via Android 1
随机 5 出现的次数,然后随机剩余字母,然后打乱,java,py 都有 api
|
14
buffge 2018-01-27 18:22:51 +08:00 1
$cFive = mt_rand(0, 5);
$cUpchar = 35 - $cFive; $chs = []; for ($i = 0; $i < $cUpchar; $i++) { $chs[] = chr(mt_rand(65, 90)); } for ($i = 0; $i < $cFive; $i++) { $location = mt_rand(0, $cUpchar + $i); $temp = $chs[$location]; $chs[$location] = 5; $chs[$cUpchar + $i] = $temp; } print_r($chs); 写错了 轻喷 新手. |
15
corningsun 2018-01-29 09:22:58 +08:00
package com.v2ex.random1;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomUtils; /** * Created by corning on 2018/1/29. */ public class Random1 { public static final String A_Z = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; /** * 生成随机字符串,包含 A-Z 和指定数字 * * @param fullLen 字符串总长度 * @param num 指定的数字 * @param numLen 指定数字出现最大次数 * @return */ public static String randomAlphabetWithNum(int fullLen, int num, int numLen) { // 数字出现次数是随机的 int numRealLen = RandomUtils.nextInt(1, numLen); // 根据数字出现次数,计算字符串出现次数 int strRealLen = fullLen - numRealLen; String randomStr = RandomStringUtils.random(strRealLen, A_Z); // 在字符串中,随机获取下标并插入数字 StringBuffer sb = new StringBuffer(randomStr); for (int i = 0; i < numRealLen; i++) { int randomOffset = RandomUtils.nextInt(0, sb.length() + 1); sb.insert(randomOffset, num); } return sb.toString(); } public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println(Random1.randomAlphabetWithNum(35, 5, 5)); } } } // 测试结果 // LMKABJN5YTKICAXS5E55ZXHJOBQTJQPVXYT // RVLGQJHSQSXGXGXSOIIHRNLBPBYCPBBWY5L // KUFB5RNCHTNSYUPPUD5NDGIVFHR5RCCLFVQ // GJJMJGAEFPXEA5MZS5YTNBUHO5DWCXKJYSB // UIDXJPI5QOKF5QNPUUCDCZ5JDKTDZYJPUDI // FIBULFHIY5ZJH5XRZOMKN5EHEJOPDUECCTL // U5YDH5RRIRXEVNRPCEP5PNSKBGPQWGV5CBJ // SEQ5LAFZT55WKBRKBLSJBA5FYQJSHZJLNBM // MVW5NT5RJAUVHSKLQKMDKARSHHBRNRKGGAW // VKZIKYRXSW5XIOGR5AEFBRMKWFZV5LIORMZ |