mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-11 18:14:03 +01:00
feat: script adding/subtracting randomly from every number in an array
This commit is contained in:
parent
7e3e502880
commit
ba878afbcd
28
Bash/copyFolder.sh
Executable file
28
Bash/copyFolder.sh
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get the list of directories in the current script directory
|
||||||
|
directories=($(find . -maxdepth 1 -type d ! -name .))
|
||||||
|
|
||||||
|
# Check if there is exactly one directory
|
||||||
|
if [ ${#directories[@]} -ne 1 ]; then
|
||||||
|
echo "Error: There should be exactly one folder in the current directory."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the name of the single directory
|
||||||
|
folder_name=${directories[0]}
|
||||||
|
|
||||||
|
random_string() {
|
||||||
|
local length=$1
|
||||||
|
tr -dc 'a-zA-Z0-9!@#$%^&*()_+{}|:<>?~' < /dev/urandom | head -c $length
|
||||||
|
}
|
||||||
|
|
||||||
|
# Number of copies to create (default 100)
|
||||||
|
num_copies=${1:-100}
|
||||||
|
|
||||||
|
# Create the specified number of copies
|
||||||
|
for ((i=1; i<=num_copies; i++)); do
|
||||||
|
new_folder_name="$(random_string 255)"
|
||||||
|
cp -r "$folder_name" "$new_folder_name"
|
||||||
|
echo "Folder copied and renamed to '$new_folder_name'"
|
||||||
|
done
|
||||||
74
PYTHON/randomize_numbers/random_digits.py
Normal file
74
PYTHON/randomize_numbers/random_digits.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
import random
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
def randomize_numbers(numbers, min_percentage=1, max_percentage=20):
|
||||||
|
randomized_numbers = []
|
||||||
|
for number in numbers:
|
||||||
|
percentage = random.uniform(min_percentage, max_percentage) / 100
|
||||||
|
if random.choice([True, False]):
|
||||||
|
new_number = number + (number * percentage)
|
||||||
|
else:
|
||||||
|
new_number = number - (number * percentage)
|
||||||
|
randomized_numbers.append(new_number)
|
||||||
|
return randomized_numbers
|
||||||
|
|
||||||
|
def parse_input(input_string):
|
||||||
|
# Replace commas with dots and remove non-numeric characters except dots, commas, and digits
|
||||||
|
cleaned_input = re.sub(r'[^\d.,\s]', '', input_string).replace(',', '.')
|
||||||
|
# Split the cleaned input into individual numbers
|
||||||
|
number_strings = cleaned_input.split()
|
||||||
|
# Convert the number strings to floats
|
||||||
|
numbers = []
|
||||||
|
decimal_counts = []
|
||||||
|
for num in number_strings:
|
||||||
|
try:
|
||||||
|
float_num = float(num)
|
||||||
|
if '.' in num:
|
||||||
|
digits_count = len(num.split('.')[-1])
|
||||||
|
else:
|
||||||
|
digits_count = 0
|
||||||
|
numbers.append(float_num)
|
||||||
|
decimal_counts.append(digits_count)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
return numbers, decimal_counts
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("Usage: python random_digits.py <number1> <number2> ... [min_percentage max_percentage]")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
input_string = ' '.join(sys.argv[1:])
|
||||||
|
numbers, decimal_counts = parse_input(input_string)
|
||||||
|
min_percentage = 1
|
||||||
|
max_percentage = 20
|
||||||
|
|
||||||
|
if len(numbers) == 0:
|
||||||
|
raise ValueError("No valid numbers provided.")
|
||||||
|
|
||||||
|
if len(sys.argv) > len(numbers) + 1:
|
||||||
|
try:
|
||||||
|
min_percentage = float(sys.argv[len(numbers) + 1])
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
if len(sys.argv) > len(numbers) + 2:
|
||||||
|
try:
|
||||||
|
max_percentage = float(sys.argv[len(numbers) + 2])
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
randomized_numbers = randomize_numbers(numbers, min_percentage, max_percentage)
|
||||||
|
formatted_numbers = []
|
||||||
|
for i, num in enumerate(randomized_numbers):
|
||||||
|
format_str = f'.{decimal_counts[i]}f'
|
||||||
|
formatted_numbers.append(float(format(num, format_str)))
|
||||||
|
|
||||||
|
print("Original numbers:", numbers)
|
||||||
|
print("Randomized numbers:", formatted_numbers)
|
||||||
|
except ValueError as e:
|
||||||
|
print(f"Error: {e}")
|
||||||
|
print("Please provide valid numbers and percentages.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user