Skip to content

Instantly share code, notes, and snippets.

@brimston3
Created March 18, 2014 11:27
Show Gist options
  • Save brimston3/9618239 to your computer and use it in GitHub Desktop.
Save brimston3/9618239 to your computer and use it in GitHub Desktop.
some die rolling nonsense for d&d-like stats
import random;
import os;
import copy;
random.seed(os.urandom(20));
def Mode1GenFcn():
dg = []
for x in range(4):
dg.append(random.randint(1,6))
dg.sort()
dg.reverse()
genstring = "%d,%d,%d,(%d)" % tuple(dg)
return (sum(dg[0:3]),genstring)
def Mode2GenFcn():
dg = []
for x in range(3):
dg.append(random.randint(1,6))
dg.sort()
dg.reverse()
genstring = "%d,%d,%d" % tuple(dg)
return (sum(dg),genstring)
def Mode3GenFcn():
dg = []
for x in range(2):
dg.append(random.randint(1,6))
dg.sort()
dg.reverse()
genstring = "6+%d,%d" % tuple(dg)
return (6+sum(dg),genstring)
def Mode4GenFcn(l):
if len(l) != 6:
print("Too few stats for priority!");
return []
l_cpy = copy.deepcopy(l);
l_cpy.sort()
if (l_cpy[0] < 3):
print("One or more stats are less than 3, try again");
return []
rset = []
for y in range(6):
dg = []
for x in range(l[y]):
dg.append(random.randint(1,6))
dg.sort()
dg.reverse()
gs = []
gs.append("%d,%d,%d" % tuple(dg[0:3]))
if (l[y] > 3):
gs.append("(")
for z in range(3,l[y]):
if (z != 3):
gs.append(",")
gs.append("%d" % dg[z])
gs.append(")")
genstring = "".join(gs)
rset.append((sum(dg[0:3]),genstring))
return rset
#### Uncomment proper generator function
for x in range(6):
#print(str(Mode1GenFcn()))
#print(str(Mode2GenFcn()))
#print(str(Mode3GenFcn()))
pass
print(str(Mode4GenFcn([3,5,4,3,6,5])))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment