Dear Sir,
I’ve added skeletal draft of my GSOC proposal (as per the Apache foundation’s
guidelines) below :
GSOC-19 Application :- RNG-32: Implement More Generators
Background
The Commons RNG is focused on the utilization of Java-only implementations of
various standard generators, with focus being placed on fast generators with
strong uniformity and predictability.
Design / description of work
- Implementation of Linear Congruential Generators
- Implementation of Lagged Fibonacci Generators
- Implementation of PCGs
Results for the Apache community
The implementation of PRNGs will allow for the occurrence of speed and
regularity for sequences of pseudo random numbers, easing the creation of
applications involving data encryption, games and gambling.
Deliverables
Java Implementations for the following PRNGs shall be provided:
1. Linear Congruential Generators : One of the oldest and best known PRNG
algorithms, LCGs create pseudo random sequences of numbers using discontinuous
piecewise linear equations.
2. Lagged Fibonacci Generators : An improvement over Linear Congruential
Generators , these PRNGs take their inspiration from the Fibonacci series, and
utilise the following generalised formula :
Sn = Sn-k * Sn-j (mod m) , where ‘*’ is a binary operation. (NOTE: k and j may
not be selected randomly)
3. PCGs : Permuted Congruential Generators are RNGs which are modern, light
and reliable in nature, and are more efficient than LCGs while utilising a
power of 2 modulus, leading to unbiased output bits.
Scheduling
May 27- Beginning of coding and testing for Linear Congruential Generators
June 17 - Testing for LCG commenced along with potential bug fixing
June 24 18:00 UTC - Testing phase 1 - complete. Mentor evaluation of LCGs begin
/ Evaluation 1
June 28 18:00 UTC - Phase 1 Evaluation deadline
June 29 - Beginning of implementation for Lagged Fibonacci Generators
July 15 - Student testing of implemented LFGs begins along with bug fixing
July 22 18:00 UTC - Testing Phase 2 – Complete. Mentor evaluation of LFGs begin
/ Evaluation 2
July 26 18:00 UTC - Phase 2 Evaluation deadline
July 27 -Design and Coding for Java Implementation of PCGs begin
August 12 - Student testing of PCGs begins along with the implementation of
final fixes to code
August 19 - 26 18:00 UTC - Final phase of Student Testing Complete. Mentor
evaluation of overall code begins / Final evaluation
August 26 - Sept 2 18:00 UTC - Mentors submit final student evaluations
September 3- Final results of Google Summer of Code 2019 announced
Other commitments
None during the period of May 27th-July 27th . College begins from July 27th,
but shall not affect the deadlines proposed.
Community engagement
Interacted with Gilles sir in the JIRA forum, along with subscription and
interaction with members of the developer’s mailing list. Project importing and
building using Maven also performed.
-- END OF PROPOSAL—
NOTE: I had created a table for the scheduling part, which got removed when I
copied my draft proposal from the word document to mail, along with various
cosmetic changes which I had applied to the text.
Should I add my previous experience with Java and other qualifications, along
with sources of information? What other changes should I make to my current
proposal ? Feedback would be highly appreciated.
PS :- Apologies for not replying earlier, I’ve been under the weather for the
past few days. I shall undertake the changes you and Alex sir have advised, and
reply as soon as possible.
Thanking you,
Yours Faithfully,
Abhishek