Catan Is Broken. Unplayable

Discussions about BGA (all languages)
Forum rules
Warning: challenging a moderation in Forum = 10 days ban
More info & details about how to challenge a moderation: viewtopic.php?p=119756
nbhskrfn
Posts: 2
Joined: 06 October 2023, 20:08

Catan Is Broken. Unplayable

Post by nbhskrfn »

The “randomizer” is just so bad. If 8 is getting rolled then 6 is almost totally suppressed. Vice versa if it’s 6. It’s the same with 5 & 9 and 10 & 4. You can immediately tell who’s going to win by the first 6 rolls and settlement placement. I’m done . Considering canceling my subscription.
User avatar
GTSchemer
Posts: 1130
Joined: 09 August 2013, 03:26

Re: Catan Is Broken. Unplayable

Post by GTSchemer »

For any game where this occurs, you're certainly welcome to post the distribution of numbers from the whole game, and put it in a curve fitting website to check whether the bell curve probably follows random distribution. Or, if you just post the distribution, we can do the curve fitting.

However, if you do not post the full distribution from the game, we can't adequately perform curve fitting to demonstrate (or disprove) the distribution for the game in question.

As you may know, random numbers in the Catan source simply use the BGA random number generator and have no capacity for manipulation.
User avatar
Sjarmtrollet
Posts: 86
Joined: 02 July 2023, 00:45

Re: Catan Is Broken. Unplayable

Post by Sjarmtrollet »

nbhskrfn wrote: 08 November 2023, 16:04 You can immediately tell who’s going to win by the (...) settlement placement.
That's how the game was designed.
User avatar
Romain672
Posts: 1348
Joined: 05 April 2016, 13:53

Re: Catan Is Broken. Unplayable

Post by Romain672 »

Another theory on how work the randomness of the site, while everyone has the same.

*added to my list*
User avatar
Tisaac
Posts: 2736
Joined: 26 August 2014, 21:28

Re: Catan Is Broken. Unplayable

Post by Tisaac »

Are you sure you didnt forgot to check the "luck draws" option in your player panel ? This should appears once you are premium.
But be cautious with this option, if several players around the table has the option enabled, the table explodes since you cant have rolls that are good for all the players.
User avatar
turtler7
Posts: 147
Joined: 23 December 2016, 00:01

Re: Catan Is Broken. Unplayable

Post by turtler7 »

If games don't occur where some numbers just appear way less than the expected value... THAT ISN"T RANDOMNESS!!!!

Deviations from expected values are how you know the randomizer isn't broken.

Thanks,
Your resident mathematics teacher.
User avatar
nik592
Posts: 1390
Joined: 16 October 2022, 13:54

Re: Catan Is Broken. Unplayable

Post by nik592 »

Yeah it's that belief that if 8 hasn't come up most of the game, then it's WAY more likely to come up soon, right? Nope, every roll has the same odds of rolling an 8, because rolls don't know about previous rolls.
User avatar
Meeplelowda
Posts: 3837
Joined: 14 March 2020, 10:31

Re: Catan Is Broken. Unplayable

Post by Meeplelowda »

GTSchemer wrote: 08 November 2023, 16:29 For any game where this occurs, you're certainly welcome to post the distribution of numbers from the whole game, and put it in a curve fitting website to check whether the bell curve probably follows random distribution. Or, if you just post the distribution, we can do the curve fitting.

However, if you do not post the full distribution from the game, we can't adequately perform curve fitting to demonstrate (or disprove) the distribution for the game in question.

As you may know, random numbers in the Catan source simply use the BGA random number generator and have no capacity for manipulation.
turtler7 wrote: 08 November 2023, 19:22 If games don't occur where some numbers just appear way less than the expected value... THAT ISN"T RANDOMNESS!!!!

Deviations from expected values are how you know the randomizer isn't broken.

Thanks,
Your resident mathematics teacher.
nik592 wrote: 08 November 2023, 22:58 Yeah it's that belief that if 8 hasn't come up most of the game, then it's WAY more likely to come up soon, right? Nope, every roll has the same odds of rolling an 8, because rolls don't know about previous rolls.
I appreciate you trying to fight the good fight, but I've yet to see someone respond by saying, "oh, I understanding now and withdraw my conspiracy theory about how the site is rigged." They are only ever looking for someone to agree with them. I suppose these responses still help guide people who are willing to learn.
Play Now lobby 4ever! https://boardgamearena.com/lobby
Gulchen
Posts: 220
Joined: 01 October 2017, 06:55

Re: Catan Is Broken. Unplayable

Post by Gulchen »

I guess that much hasn't happened, but we do have ​ https://boardgamearena.com/forum/viewto ... 4&start=10 .
Gulchen
Posts: 220
Joined: 01 October 2017, 06:55

Re: Catan Is Broken. Unplayable

Post by Gulchen »

With Python 3.8.0 on linux, running

Code: Select all

from math import comb

def run_analysis_(replaytranscript):
	if type(replaytranscript) != str:
		raise TypeError
	L,histogram = len(replaytranscript),[0 for _ in range(13)]
	for i in range(L-13):
		if replaytranscript[i:i+13] != " rolls dice: ":
			continue
		if not ((i+16 < L) and (replaytranscript[i+13] in ('1','2','3','4','5','6')) and (replaytranscript[i+14] == ',') and (replaytranscript[i+15] in ('1','2','3','4','5','6')) and (replaytranscript[i+16] == '\n')):
			raise ValueError
		histogram[int(replaytranscript[i+13])+int(replaytranscript[i+15])] += 1
	numberofrolls = sum(histogram)
	if not all(sum(int(replaytranscript[i:i+3] == threecharstring) for i in range(L-3)) == numberofrolls for threecharstring in ("rol","lls","dic","ce:")):
		raise ValueError
	print()
	print(str(numberofrolls)+" total rolls")
	print("frequency of (4,5,6,8,9,10):  "+(','.join(str(histogram[i]) for i in (4,5,6,8,9,10))))
	print()
	inner,middle,outer = histogram[6]+histogram[8],histogram[5]+histogram[9],histogram[4]+histogram[10]
	frequencyofwhatwasobserved = (2-int(histogram[6] == histogram[8]))*comb(inner,histogram[8])*(2-int(histogram[5] == histogram[9]))*comb(middle,histogram[9])*(2-int(histogram[4] == histogram[10]))*comb(outer,histogram[10])
	partitionintothree,numberofties = [0,0,0],0
	for x in range((inner//2)+1):
		for y in range((middle//2)+1):
			for z in range((outer//2)+1):
				frequencyofxyz = (2-int(2*x == inner))*comb(inner,x)*(2-int(2*y == middle))*comb(middle,y)*(2-int(2*z == outer))*comb(outer,z)
				if frequencyofwhatwasobserved < frequencyofxyz:
					partitionintothree[2] += frequencyofxyz
				elif frequencyofxyz < frequencyofwhatwasobserved:
					partitionintothree[0] += frequencyofxyz
				elif (x,y,z) == (min(histogram[6],histogram[8]),min(histogram[5],histogram[9]),min(histogram[4],histogram[10])):
					partitionintothree[0] += frequencyofxyz
				else:
					partitionintothree[1] += frequencyofxyz
					numberofties += 1
	if sum(partitionintothree) != 2**sum(histogram[i] for i in (4,5,6,8,9,10)):
		raise RuntimeError
	denominator = sum(partitionintothree)
	print()
	if numberofties == 0:
		print("The p-value is  "+str(partitionintothree[0]/denominator)+" .")
	elif numberofties == 1:
		print("There is exactly one other way to get the same frequency.")
		print("If that tie is broken in the way that makes the observed event more surprising, then the p-value is  "+str(partitionintothree[0]/denominator)+" .")
		print("Otherwise, the p-value is  "+str((partitionintothree[0]+partitionintothree[1])/denominator)+" .")
	else:
		print("There are "+str(numberofties)+" other ways to get the same frequency.")
		print("If there is no tiebreaker, then the p-value is  "+str((partitionintothree[0]+partitionintothree[1])/denominator)+" .")
		print("Otherwise, the p-value is at most that and at least  "+str(partitionintothree[0]/denominator)+" .")
	print()
on copy-pastes of ​ the analogue of https://boardgamearena.com/gamereview?table=437304303
from your 11 most-recent CATAN games gives p-values

0.853095 ​ , ​ 0.491452 ​ , ​ 0.248882 ​ , ​ 0.134306 or 0.141482 ​ , ​ 0.375248 ​ , ​ 0.446907
, ​ 0.0496748 ​ , ​ 0.451987 ​ , ​ 0.388373 or 0.414333 ​ , ​ 0.254257 ​ , ​ 0.0922030 ​ ​ ​ .


I did 11 rather than 10 because 0.491452 was from a game where ​ ​ ​ Someone left it before the end ​ .
Post Reply

Return to “Discussions”