st.petersburg paradox in python

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

 

I have been trying to do the St.Petersburg paradox( the player wins 2 dollars if tail appears on the first toss, 4 dollars if heads appear on the first toss and tails on the second, 8 dollars if heads appear on the first two tosses and tails on the third, and so on.) in python.

 

But I cannot do it correctly. I want to know if we flip the coin 100 times, how much money we will get.

 

import random

 

def St(number):

    l=[]

    money=0

    signs=["head","tail"]

    for i in range(number):

        choices=random.choice(signs)

        while choices=="head":

            l.append(2)

        if choices=="tail":

            money=money+sum(l)+2

            del l[:]

    result=round(money/number,3)

    return(money,result)

 

print(St(100)) 

but it doesnt give any results or just 2 i tried in another way but its the same: import random

 

def St(number):

    l=[]

    money=0

    signs=["head","tail"]

    for i in range(number):

        choices=random.choice(signs)

        while choices=="head":

            l.append(choices)

        if choices=="tail":

            money=money+2**(len(l)+1)

            del l[:]

        result=round(money/number,3)

        return(money,result)

 

print(St(100)) 

Can you help me?

profilepic.png
manpreet 2 years ago

In Python, there's usually an easy way. Here's what you could do, using the U(0,1)-sampling numpy.random.random:

 

from numpy.random import random

 

def St(number):

  result = 2

  for i in range(number):

    if random() < 0.5: return result

    result *= 2

  return result


0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.