• gpu


    import random
    import threading
    
    N = 100
    res_dic = {}
    
    
    def compute_combination(n, x):
        numerator = 1
        denominator = 1
        breaker = n - x
        for i in range(n, breaker, -1):
            numerator *= i
        breaker = x + 1
        for i in range(1, breaker, 1):
            denominator *= i
        return int(numerator / denominator)
    
    
    def gen_column(num, newer):
        random_breaker = N - 1
        replace_index = random.randint(0, random_breaker)
        if newer[replace_index] == 0:
            newer[replace_index] = 1
        if newer.count(0) == num:
            return newer
        else:
            gen_column(num, newer)
    
    
    def enumerate_column(num):
        combination = compute_combination(N, num)
        i = 0
        while i < combination:
            model_list = [0 for ii in range(0, N, 1)]
            gen_column(num, model_list)
            if model_list in res_dic[num]:
                i -= 1
            if model_list not in res_dic[num]:
                res_dic[num].append(model_list)
            if len(res_dic[num]) == combination:
                return res_dic[num]
            i += 1
            print(num, len(res_dic[num]), combination)
    
    
    NO_LIST = [95, 85, 80, 79, 74]
    for i in NO_LIST:
        res_dic[i] = []
    
    
    class MyThread(threading.Thread):
        def __init__(self, func, args, name):
            threading.Thread.__init__(self)
            self.name, self.func, self.args = name, func, args
    
        def run(self):
            self.func(self.args)
    
    
    threads_list = []
    for i in res_dic:
        thread_instance = MyThread(enumerate_column, (i), enumerate_column.__name__)
        threads_list.append(thread_instance)
    for t in threads_list:
        t.setDaemon = False
        t.start()
    for t in threads_list:
        t.join()
    
    a, b, c, d, e = res_dic
    i, min_, target_ = 0, N, 3
    for ai in res_dic[a]:
        for bi in res_dic[b]:
            for ci in res_dic[c]:
                for di in res_dic[d]:
                    for ei in res_dic[e]:
                        final_dic = {}
                        for ii in range(0, 6, 1):
                            final_dic[ii] = 0
                        for ii in range(0, N, 1):
                            l_ = []
                            l_.append(ai[ii])
                            l_.append(bi[ii])
                            l_.append(ci[ii])
                            l_.append(di[ii])
                            l_.append(ei[ii])
                            count_ = l_.count(1)
                            final_dic[count_] += 1
                        compare_ = 0
                        for ii in range(0, target_, 1):
                            compare_ += final_dic[ii]
                        min_ = min(min_, compare_)
    print(min_)
    

      

  • 相关阅读:
    一行命令搞定AD数据库备份
    PowerShell实战4:批量修改AD账户EMail属性
    PowerShell实战1:Ping_Test
    分享/etc/sysctl.conf和/boot/loader.conf优化
    PowerShell实战5: 批量增加AD组成员
    bsd压力测试工具
    kernel : arp .....的訊息
    将域控制器移到新的 Active Directory 站
    pf限速限链接数
    FreeBSD笔记
  • 原文地址:https://www.cnblogs.com/rsapaper/p/7355228.html
Copyright © 2020-2023  润新知