Я использую визуализатор для просмотра данных зондового зонда.Как случайно удалить определенную часть строк файла?
Мои выходные файлы содержат 4 столбца. Каждая строка содержит координаты x, y и z атома плюс значение интенсивности, которое определяет, какой именно атом. Каждый элемент в системе имеет выходной файл.
У меня есть код, который подсчитывает количество строк в каждом выходном файле и делит его на общую сумму, чтобы рассчитать состав системы. Например, если сумма всего количества строк в каждом выходном файле равна 100, а мой выходной файл с атомом железа содержит 85 строк, 85% системы состоит из атомов железа.
Теперь я хочу уменьшить количество атомов железа, так что легче видеть другие атомы. Как я могу случайно удалить 90% строк из выходного файла? Я хочу сделать что-то вроде этого: условное
if ($atom>80) { #such as iron being 85
#randomly remove lines, perhaps with rand()
}
Возможно ли это, чтобы не удалить ровно 10% линий? Например, если у нас есть 100 строк, можем ли мы получить 89 или 91? – chilemagic
@Matt Мое первое решение - * случайное *. В среднем мы удалим количество строк '$ percent'. Я добавил другое более точное решение; он удалит 'floor (ironAtoms · percent)' records. Поскольку это требует, чтобы мы знали количество атомов железа, мы должны прочитать во всем файле, который неэффективен для больших наборов данных. – amon
У меня возникли проблемы с реализацией этого кода. Проблема в том, что я открываю выходной файл, записываю в 4 столбца данных и закрываю его для нескольких ионов (т. Е. Если имеется несколько атомов Fe с разными зарядами, у всех у них есть собственный файл). Затем я использую кошку для объединения всех ионов одного и того же элемента. Теперь, если новый файл элемента составляет достаточно большую часть системы (например, 80%), я хочу случайным образом удалить 90% этого файла. –