小编use*_*511的帖子

如何生成长度达到一定长度的随机字符串?

我想生成一个随机字符串(或一系列随机字符串,允许重复),长度介于1和n字符之间(有限).每个字符串应该具有相同的可能性(换句话说,字符串应该是均匀分布的).

均匀性要求意味着这样的算法不起作用:

alphabet = "abcdefghijklmnopqrstuvwxyz"
len = rand(1, n)
s = ""
for(i = 0; i < len; ++i)
    s = s + alphabet[rand(0, 25)]
Run Code Online (Sandbox Code Playgroud)

(伪代码,rand(a, b)返回一个介于a和之间的整数b,包含每个整数的可能性)

该算法生成具有均匀分布长度的字符串,但实际分布应该朝向更长的字符串加权(长度为2的字符串数量是长度为1的字符串的26倍,依此类推.)如何实现此目的?

language-agnostic string algorithm

15
推荐指数
3
解决办法
4295
查看次数

如何跳转到Perl中的特定输入行?

我想跳到包含"include"的第一行.

<> until /include/;
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

perl loops

5
推荐指数
1
解决办法
1087
查看次数

比较Python中的词典

给定两个字典,d1d2和一个整数l,我想找到所有的钥匙kd1这样的,要么d2[k]<lk not in l.我想输出密钥和相应的值d2,除非d2不包含密钥,我想打印0.例如,如果d1

a: 1
b: 1
c: 1
d: 1
Run Code Online (Sandbox Code Playgroud)

并且d2

a: 90
b: 89
x: 45
d: 90
Run Code Online (Sandbox Code Playgroud)

并且l是90,输出将是(可能以不同的顺序)

b 89
c 0
Run Code Online (Sandbox Code Playgroud)

在Python中执行此操作的最佳方法是什么?我刚刚开始学习这门语言,到目前为止这就是我所拥有的:

for k in d1.keys():
    if k not in d2:
        print k, 0
    else:
        if d2[k]<l:
            print k, d2[k]
Run Code Online (Sandbox Code Playgroud)

这当然是有效的(除非我有一个错字),但在我看来,会有更多的pythonic方式.

python dictionary

5
推荐指数
2
解决办法
1万
查看次数

安排数量

假设我们有ñ元素,1,2,...,ñ,排成一个圆圈.也就是说,一个2之间一个1一个3,一个3之间一个2一个4,一个Ñ是间Ñ -1一个1,等等.

如果有对应的1或0的两个布置是不同的每个元件可以采取的值一个其值不同的.例如,当n = 3时,(1,0,0)和(0,1,0)是不同的排列,即使它们在旋转或反射下可能是同构的.

因为有n个元素,每个元素可以取两个值,所以排列的总数是2 n.

这是一个问题:

有多少种安排是可能的,这样两个相邻的元素都没有值1?如果有帮助,只考虑n > 3的情况.

我问这里有几个原因:

  1. 这是在我解决编程问题时出现的
  2. 听起来这个问题可能会受益于布尔逻辑/位算术
  3. 也许没有封闭的解决方案.

algorithm math

4
推荐指数
1
解决办法
972
查看次数

标签 统计

algorithm ×2

dictionary ×1

language-agnostic ×1

loops ×1

math ×1

perl ×1

python ×1

string ×1