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

Reply via email to