In statistics, one of the most used statistic is the standard error. From the Wikipedia
article describing the standard error, it is defined as the standard deviation of its sampling
distribution. The sampling distribution of a population mean is generated by repeated sampling and recording of the means obtained. This forms a distribution of different means,
and this distribution has its own mean and variance. Mathematically, the variance of the
sampling distribution obtained is equal to the variance of the population divided by the
sample size. This is because as the sample size increases, sample means cluster more closely
around the population mean.
Create a Python computer program to compute the mean and standard error given a population. For this assignment, assume that the population consists of all whole numbers (integers)
from and including 0 to and including 10000. Obviously the mean is 5000, but let’s assume
that we sample our population for n samples, where n = [10; 20; 50; 100; 200; 500; 1000; 5000].
Determine and output the sample mean and standard error.
The following Python related documentation will prove useful:
• Module random
Exercise 2. Vigenere Cipher
As you may recall from class, code was given to encrypt text via the Caesar cipher. The
Caesar cipher is a substitution cipher in which each letter in the text is ’shifted’ a certain
number of places down the alphabet. For example, with a shift of 1, A would be replaced by
B, B would become C, and so on. The method is named after Julius Caesar, who apparently
used it to communicate with his generals.
The Caesar cipher is rather easy to break, because in the English language, the letter ’E’ is
the most commonly used letter. Vowels are used more frequently than consonants with the
consonants ’R’, ’S’, ’T’, ’L’, and ’N’ being the most used. Any frequency analysis can easily
piece together what the ’shift’ number is analyzing the frequency of letters in the encrypted
text.
1
First described in 1553, the Vigenere cipher is a method of encrypting text using a series
of interwoven Caesar ciphers. From the Wikipedia article describing the Vigenere cipher,
one would need to input a key, which is repeated until the repeated key length is the same
length as the text to be encrypted. Iterating over the text and key, one sees that the ’shift’ is
essentially changing for each letter within text. All that is required is that both participants
in the encrypted dialogue must agree to use the same key.
Create a Vigenere cipher Python program utilizing the following steps:
1. Ask the user to enter a string message (the text, or in the parlance of cryptography,
the plaintext). Use the Python input function.
2. Ask the user to enter a key. Again, use the Python input function. Please error check
that the key is valid. A valid key will consist only letters.
3. Encrypt the user’s message with the Vigenere cipher and print the encrypted messaged
to the screen. Only encrypt letters. Any non-letters should be kept unaltered.
4. Decrypt the encrypted message back to a plaintext message and print the plaintext to
the screen.
The following Python related documentation will prove useful:
• Common string operations
• Regular expression operations
2