生成随机数据

时间:2015-07-31 07:26:06

标签: python python-2.7

我试图为“ACDEFGHIKLMNPQRSTVWY'”生成随机数据。使用以下脚本以3-mer形式(如AEF),但在输出中我得到了许多类似的3-mer。你能告诉我怎么做,不要得到类似的结果或删除相同的3-mer?

提前致谢, 伯克

import random

def random_AA_seq(length):
    return ''.join(random.choice('ACDEFGHIKLMNPQRSTVWY') for i in range(length))

list_size = 10000
lengths = []

for j in range(list_size):
    a = int(random.normalvariate(3, 0))
    print random_AA_seq(a)

4 个答案:

答案 0 :(得分:1)

要删除相同的项目,只需将其设为:

var request = require('request');

request({
  url: "https://www.googleapis.com/gmail/v1/users/me/watch",
  method: "POST",
  headers: {
    Authorization: 'Bearer {YOUR_API_KEY}'
  },
  data: {
    topicName: "projects/pipedrivesekoul/topics/my-new-topic",
    labelIds: ["INBOX"]
  },
  json: true
}, function(response) {
  console.log(JSON.stringify(response, null, 4));
});

要获得所有可能的排列,您还可以使用itertools ...

print set(random_AA_seq(a))

......然后随机挑选你的3-mers。

答案 1 :(得分:1)

每条评论:

alphabet = "ACDEFGHIKLMNPQRSTVWY"
all_trimers = map("".join, itertools.product(* [alphabet] * 3))
a_few_distinct_trimers = random.sample(all_trimers, 42)

答案 2 :(得分:0)

只是

''.join(random.choice(string.ascii_uppercase) for _ in range(3))

应该没问题

答案 3 :(得分:0)

更新回答,以下脚本将返回所需长度为3的列表。每个3mer将出现在列表中一次:

import random

def random_3mers(length):
    seqs = set()

    while len(seqs) < length:
        seqs.add("".join(random.sample("ACDEFGHIKLMNPQRSTVWY", 3)))

    lseqs = list(seqs)
    random.shuffle(lseqs)
    return lseqs

for three_mer in random_3mers(10):
    print three_mer

如果长度为10,将显示以下类型的输出:

MKY
KWV
PRY
WKQ
YGI
ANQ
GFL
RQE
SCN
GRY