Я использую две программы архитектуры, с визуальными плагинами программирования (Кузнечик для Rhino и Динамо для Revit - для тех, кто знает/заинтересованы)различной степени перетасовки с использованием случайных модуль питона
Кузнечик содержит функцию под названием «Дрожание 'это будет перетасовывать список, однако он имеет вход от 0.0 до 1.0, который контролирует степень перетасовки - 0.0 приводит к отсутствию перетасовки 1.0, что приводит к полной перетасовке.
Вторая из программ (Dynamo) не содержит этой функции. Он содержит модуль перетасовки (который содержит начальное значение), но это полная случайная перетасовка.
В конечном счете, цель состоит в том, чтобы произвести серию твердых и застекленных панелей, но для получения небольшого случайного эффекта (но избегая большие комков твердых и стекловидных элементов - следовательно, я хочу «легкую перетасовать»)
I написали код, который рассчитает количество требуемых застекленных (истинных) и твердых (False) значений, а затем равномерно распределит значения True и False в зависимости от количества указанных элементов и процентов.
Я проверил случайную ссылку модуля, но я не знаком с различными дистрибутивами, как описано.
Может кто-нибудь помочь или указать мне в правильном направлении, если существующая функция достигнет этого.
(я немного обманутыми, добавив True False поочередно, чтобы составить правильное количество элементов в списке - песни3 итоговый список, песни2 содержит повторяющееся модуль истинных falses)
Большое спасибо
import math
import random
percent = 30
items = 42
def remainder():
remain = items % len(list2)
list3.append(True)
remain -= 1
while remain > 0 :
list3.append(False)
remain -= 1
return list3
#find module of repeating True and False values
list1 = ([True] + [False] * int((100/percent)-1))
#multiply this list to nearest multiple based on len(items)
list2 = list1 * int(items/(100/percent))
# make a copy of list2
list3 = list2[:]
#add alternating true and false to match len(list3) to len(items)
remainder()
#an example of a completely shuffled list - which is not desired
shuffled = random.sample(list3, k = len(list3))
Случайный модуль Python имеет метод «shuffle», поэтому реализация полного тасования в качестве образца бессмысленна. Что касается «дрожания» - возможно, случайные свопы элементов со своими соседями определенное количество раз, что приведет к диффузии исходного порядка. –