Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1. # Stochastically generate two balanced teams
  2. import random
  3. from datetime import datetime
  4.  
  5.  
  6. def generateFinal(playerScores: list, noOfInterations: int):
  7.     random.seed(datetime.now())
  8.     if (len(playerScores) % 2 == 1):
  9.         print("Odd number of players")
  10.     else:
  11.         A = playerScores[:len(playerScores) // 2]
  12.         B = playerScores[len(playerScores) // 2:]
  13.         lowestDif = abs(sum(A) - sum(B))
  14.         for i in range(0, noOfInterations):
  15.             randIndexA = random.randint(0, len(A) - 1)
  16.             randIndexB = random.randint(0, len(B) - 1)
  17.  
  18.             sumA = sum(A)
  19.             sumB = sum(B)
  20.  
  21.             newSumA = sumA - A[randIndexA] + B[randIndexB]
  22.             newSumB = sumB - B[randIndexB] + A[randIndexA]
  23.             newDif = abs(newSumA - newSumB)
  24.  
  25.             if (newDif < lowestDif):
  26.                 temp = A[randIndexA]
  27.                 A[randIndexA] = B[randIndexB]
  28.                 B[randIndexB] = temp
  29.                 lowestDif = newDif
  30.         print("Initial: " + str(playerScores) + "\nA: " + str(A) + "\nB: " + str(B) + "\nDif: " + str(lowestDif))
  31.  
  32.  
  33. def generateRandomArray(arrLen: int, minPar: int, maxPar: int):
  34.     random.seed(datetime.now())
  35.     arr = []
  36.     if ((maxPar - minPar) % 2 == 1):
  37.         maxPar += 1
  38.     for i in range(0, arrLen):
  39.         arr.append(random.randint(minPar, maxPar))
  40.     return arr
  41.  
  42.  
  43. lenarr = 100
  44.  
  45. #generateFinal(generateRandomArray(lenarr, 23, 1031), lenarr ** 2)
  46. generateFinal([3,5,6 ,7,22,67,234,251,4,1], 9**5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement