DRibeiro1124 / Assignments

0 stars 0 forks source link

Week 02 Day 3 - All Cards on Deck - #7

Closed mdewey closed 6 years ago

mdewey commented 6 years ago

title: All Cards on Deck!

In this project, you will use JavaScript to model a deck of playing cards. You'll also add functionality to it such as shuffling and dealing.

Shuffling Cards

Computers are notoriously bad at random numbers. This is a pretty deep and complex topic, but it's worth pointing out that most random numbers we use in computing are actually "pseudorandom". For this assignment, you will read about, then implement, a popular algorithm that shuffles the order of a finite set using JavaScript's built in Math.random() function as a pseudorandom number generator.

Objectives

Requirements

You will model these in code, in any way you see fit. It may require you to experiment and try a number of techniques. There are many valid solutions. Your user interface should consist of a face down deck, and a face up "hand" of cards that have been dealt.

Read about, and implement the Fisher–Yates shuffle algorithm:

For our purposes, n is 52:

for i from 0 up to n - 1 do:
  j = random integer less than i
  swap items[i] with items[j]

Explorer Mode

Adventure Mode

Epic Mode

Additional Resources

A Hint on Random Numbers

This snippet will give you a random integer, z between 0 and n:

const z = Math.floor(Math.random() * n)

Let's break this down from the inside out:

  1. For this example, assume n is 20.
  2. We use Math.random() to generate a floating-point number between 0 and 1. Let's assume our random value is 0.42.
  3. Multiply that number by n. If we think of this random value as a percentage, multiplying these gives us a number that is some "percentage" of n. Their product is 8.4, or 42% of n.
  4. We use Math.floor() to round down to the nearest whole number, i.e. 8.

Because we're rounding down, it's impossible to get 20. This will give us an integer between 0 and 19. This technique is perfect for finding a "random" index in an array of length n.

DRibeiro1124 commented 6 years ago

I was trying to push to github and it gave me an error message. Not sure if it went through but looks like it's shuffling (much thanks to Michael and Jason for helping little details).

mdewey commented 6 years ago

What is the link the repository?

mdewey commented 6 years ago

Awesome Work!

DRibeiro1124 commented 6 years ago

https://github.com/DRibeiro1124/shuffle