序列排列组合代码实现以及ChatGPT、文件工具分享

文章介绍了两种对序列进行排列组合的方法:模拟随机抽样和顺序抽样。模拟抽样适合较短序列,代码简洁,但可能无法得到所有排列;顺序抽样虽然代码复杂,但能保证生成所有组合,速度快。对于多片段排列,作者推荐模拟随机抽样,而ChatGPT和高效文本处理工具如EmEditor也被提及作为辅助工具。
摘要由CSDN通过智能技术生成

有时候我们需要对序列进行排列组合得到新的突变,这里有点像不放回的、有顺序的抽样,我们有两种思路,第一种模拟随机抽样,第二种顺序抽样。

一、模拟随机抽样


seq1 = ["YLasfsgLL", "KksaTK", "afrhfL", "ildfsA", "shgY", "IjkkufAY", "RLolfjffjV", "fsgfgYV", "Vkuuky", "fassfagd"]
from tqdm import tqdm
from random import choice
import random
import math
f = open("E:\资料\课题\数据\sequence4.txt","w")
seq = []
b = ""
m = math.factorial(len(seq1))#阶乘运算
seq2 = seq1
while len(seq) <= m:
  for a in range(len(seq1)):
    c = random.choice(seq2)
    b += c
    del seq2[seq2.index(c)]
  if b not in seq:
    f.write(">" + str(len(seq) + 1) + "\n" + b + "\n")
    seq.append(b)
    b = ""
    del seq2 
    seq2 = seq1
    print(len(seq))

f.close()

二、顺序抽样


from tqdm import tqdm
s = ["YLasfsgLL", "KksaTK", "afrhfL", "ildfsA", "shgY", "IjkkufAY", "RLolfjffjV", "fsgfgYV", "Vkuuky", "fassfagd"]

ff = open("E:\资料\课题\数据\sequence.txt","w")
ii = 0
for a in tqdm(s):
  for b in s:
    if b not in a:
      for c in s:
        if c not in (a + b):
          for d in s:
            if d not in (a + b + c):
              for e in s:
                if e not in (a + b + c + d):
                  for f in s:
                    if f not in (a + b + c + d + e):
                      for g in s:
                        if g not in (a + b + c + d + e + f):
                          for h in s:
                            if h not in (a + b + c + d + e + f + g):
                              for i in s:
                                if i not in (a + b + c + d + e + f + g + h):
                                  for j in s:
                                    if j not in (a + b + c + d + e + f + g + h + i):
                                      ii += 1
                                      ff.write(">" + str(ii) + "\n" + a + b + c + d + e + f + g + h + i + j + "\n")



ff.close()

三、两种方法比较优缺点:

   模拟随机抽样优点:代码短、简单,可增删元素便可直接运行,可替代性强

   模拟随机抽样缺点:随机产生,序列越长,后续随机抽取的重复样本越多,越到后面出现新序列的时间呈现指数增加,可能永远也不能得到所有的排列组合,程序会一直运行;但如果只需要100万条序列以下还是比较容易实现,但也得花费十来个小时。

   顺序抽样优点:能一直保持很快的速度产生新序列,直到完成所有的排列组合,几百万条序列可能需要20min完成。

   顺序抽样缺点:代码长,如果有增删列表长度,则需要修改代码,对于不熟悉代码的新手不太友好

  对于多片段(大于10个),个人更推荐模拟随机抽样,这样更能体现序列 的随机性,在一定程度上这种随机性更能表示突变或者说重组的任意性,符合生物进化的规律。较少的片段组合,则可以考虑顺序抽样,弥补样本库的不足。

四、ChatGPT

   ChatGPT是一个基于自然语言处理技术的智能聊天机器人。它使用了目前最先进的神经网络技术,比如像GPT-3这样的预训练语言模型来解决各种问题和任务,具有极高的语言理解能力和灵活性。ChatGPT可以帮助用户进行自然对话,回答用户提出的各种问题,并学习日常用语、语法和知识库中的信息,并不断完善和更新以提供更准确、更人性化和优质的服务。ChatGPT在日常应用场景中有很多实用价值,比如可以用来解答各种问题、进行个性化推荐、提供娱乐互动等。

    上面这段百度百科也是找ChatGPT给出的答案,非常有意思,网站:Chatgpt在线网页版-永久免费使用!(qdymys.cn) https://chatgpt.qdymys.cn/

   大家可以试试玩玩!

五、文本处理工具

   工作中有很多文件,其大小可能到几百兆甚至以G计算,电脑自带的txt处理文本,打开非常缓慢,有一个能快速打开并处文本的工具,特别是在windows下,将非常有意思。如Notepad++和EmEditor,其中EmEditor速度尤其的快,是我用过的最快的文本打开软件,上G的文本秒开不卡顿。

序列排列组合代码实现以及ChatGPT、文件工具分享 (qq.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值