<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<link href="http://getbootstrap.com/dist/css/bootstrap.css" rel="stylesheet" type="text/css" />
<script src="http://getbootstrap.com/dist/js/bootstrap.js"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body ng-App>
<div class="container">
<!-- Winning Numbers -->
<div class="row" id="winningNumbers" ng-controller="winningNumbersController">
<div ng-repeat="winningNumber in winningNumbers" class="{{winningNumber.cls}} col-xs-2" id="{{winningNumber.id}}">{{winningNumber.number}}</div>
</div>
<!-- Draw Numbers-->
<div class="row" id="drawNumbers" ng-controller="drawNumbersController">
<!-- repeat -->
<span ng-repeat="drawNumber in drawNumbers">
<div class="{{drawNumber.cls}} col-xs-2" id="{{drawNumber.id}}">{{drawNumber.number}}</div>
</span>
</div>
<div class="row">
<hr>
</div>
<div id="results" class="row" ng-controller="resultsController">
<table class="table table-striped">
<thead>
<tr>
<th>Matching Numbers</th>
<th>Winning Draws</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="result in results">
<td>{{result.label}}</td>
<td id="">{{result.value}}</td>
</tr>
</tbody>
</table>
<hr>
</div>
<!-- Stats -->
<div class="row">
<table class="table table-striped">
<thead>
<tr>
<th>Total Draws</th>
<th>Total Winning Draws</th>
</tr>
</thead>
<tbody>
<tr id="stats" ng-controller="statsController">
<td>{{totalDraws}}</td>
<td>{{totalWinningDraws}}</td>
</tr>
</tbody>
</table>
<hr>
</div>
<!-- Controls -->
<div class="row">
<div class="pull-right">
<button type="button" class="reset btn btn-default">Reset</button>
<button type="button" class="draw btn btn-default" data-draw="1">Draw 1</button>
<button type="button" class="draw btn btn-default" data-draw="100">Draw 100</button>
<button type="button" class="draw btn btn-default" data-draw="500">Draw 500</button>
<button type="button" class="draw btn btn-default" data-draw="1000">Draw 1000</button>
<button type="button" class="draw btn btn-default" data-draw="5000">Draw 5000</button>
<button type="button" class="autodraw btn btn-default">Auto Draw</button>
</div>
</div>
</div>
</body>
</html>
body{margin-top:20px}
.number { font-size:2em; font-weight:bold; color:#666666;
}
.mega{}
.match{}
// noprotect
// mega millions 1 to 56 and 1 to 46
// powerball 1 to 59 and 1 to 35
games = [
{
game:'MEGA MILLIONS',
numbers:56,
extra:46
},
{
game:"POWERBALL",
numbers:59,
extra:35
}
];
var game = "MEGA MILLIONS";
var autoDrawing = false;
var autoDrawSpeed = 0;
function statsController($scope){
$scope.totalDraws = 0;
$scope.drawsPerSecond = 0;
$scope.totalWinningDraws = 0;
$scope.timeRunning = 0;
}
function winningNumbersController($scope){
var arr = [];
while(arr.length < 6){
var randomnumber=Math.ceil(Math.random()*46);
var found=false;
for(var i=0;i<arr.length;i++){
if(arr[i]==randomnumber){found=true;break;}
}
if(!found){arr[arr.length]=randomnumber;}
}
$scope.winningNumbers = [
{
number: arr[0],
id: "num1",
cls: "number text-center"
},
{
number: arr[1],
id: "num2",
cls: "number text-center"
},
{
number: arr[2],
id: "num3",
cls: "number text-center"
},
{
number: arr[3],
id: "num4",
cls: "number text-center"
},
{
number:arr[4],
id: "num5",
cls: "number text-center"
},
{
number: drawRandom(1, 27),
id: "mega",
cls: "number mega text-center"
}
];
}
function drawNumbersController($scope){
$scope.drawNumbers = [
{
number:0,
id: "num1",
cls: "number text-center"
},
{
number: 0,
id: "num2",
cls: "number text-center"
},
{
number: 0,
id: "num3",
cls: "number text-center"
},
{
number: 0,
id: "num4",
cls: "number text-center"
},
{
number: 0,
id: "num5",
cls: "number text-center"
},
{
number: 0,
id: "mega",
cls: "number mega text-center"
}
];
}
function resultsController($scope) {
$scope.results = [{
"label": "5 + MEGA",
"value": 0,
"id": "5-1"
}, {
"label": "5",
"value": 0,
"id": "5-0"
}, {
"label": "4 + MEGA",
"value": 0,
"id": "4-1"
}, {
"label": "4",
"value": 0,
"id": "4-0"
}, {
"label": "3 + MEGA",
"value": 0,
"id": "3-1"
}, {
"label": "3",
"value": 0,
"id": "3-0"
}, {
"label": "2 + MEGA",
"value": 0,
"id": "2-1"
}, {
"label": "2",
"value": 0,
"id": "2-0"
}, {
"label": "1 + MEGA",
"value": 0,
"id": "1-1"
}, {
"label": "1",
"value": 0,
"id": "1-0"
}, {
"label": "MEGA",
"value": 0,
"id": "0-1"
}];
}
function drawRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function pickWinningNumbers() {
var arr = [];
while(arr.length < 6){
var randomnumber=Math.ceil(Math.random()*47);
var found=false;
for(var i=0;i<arr.length;i++){
if(arr[i]==randomnumber){found=true;break;}
}
if(!found){arr[arr.length]=randomnumber;}
}
var appElement = document.getElementById('winningNumbers');
var $scope = angular.element(appElement).scope();
$scope.$apply(function() {
$scope.winningNumbers[0].number = arr[0];
$scope.winningNumbers[1].number = arr[1];
$scope.winningNumbers[2].number = arr[2];
$scope.winningNumbers[3].number = arr[3];
$scope.winningNumbers[4].number = arr[4];
$scope.winningNumbers[5].number = drawRandom(1,27);
});
}
function drawNumbers(){
var numberMatchCount = 0;
var megaMatchCount = 0;
var isWinningDraw = false;
var winArray = [];
var drawArray = [];
// Results Scope Reference
var resultsScope = angular.element(document.getElementById('results')).scope();
// Winning Scope Reference
var winningScope = angular.element(document.getElementById('winningNumbers')).scope();
// Draw Scope Reference
var drawScope = angular.element(document.getElementById('drawNumbers')).scope();
// Stats Scope Reference
var statsScope = angular.element(document.getElementById('stats')).scope();
// Draw New Numbers
drawScope.$apply(function() {
var arr = [];
while(arr.length < 6){
var randomnumber=Math.ceil(Math.random()*47);
var found=false;
for(var i=0;i<arr.length;i++){
if(arr[i]==randomnumber){found=true;break;}
}
if(!found){arr[arr.length]=randomnumber;}
}
// Draw Numbers
for(var i=0; i<5; i++){
var newNum = arr[i];
drawScope.drawNumbers[i].number = newNum;
winArray.push(winningScope.winningNumbers[i].number);
drawArray.push(newNum);
}
// Draw Mega
var newMegaNumber = drawRandom(1,27);
drawScope.drawNumbers[5].number = newMegaNumber;
// Check Mega Match
if(newMegaNumber === winningScope.winningNumbers[5].number){
megaMatchCount = 1;
}
// Check Numbers Match
numberMatchCount = compare(winArray,drawArray);
var result = numberMatchCount + '-' + megaMatchCount;
for (i=0; i < resultsScope.results.length; i++){
if(result === resultsScope.results[i].id){
statsScope.totalWinningDraws++;
resultsScope.results[i].value++;
//console.log('win!');
if (result === '4-1' || result === '5-0' || result === '5-1'){
winArray.push(winningScope.winningNumbers[5].number);
drawArray.push(newMegaNumber);
console.log(winArray);
console.log(drawArray);
}
}
}
});
// increment draw count
$scope = angular.element(document.getElementById('stats')).scope();
$scope.$apply(function() {
$scope.totalDraws++;
});
// total wins
}
function compare(arr1, arr2) {
var count = 0, numbers = {}, i;
for(i = 0; i < arr1.length; i++) {
numbers[arr1[i]] = (numbers[arr1[i]] || 0) + 1;
}
for(i = 0; i < arr2.length; i++) {
if(numbers[arr2[i]] > 0) {
count++;
numbers[arr2[i]]--;
}
}
return count;
}
function draw(draw){
for(var i=0; i<draw; i++){
drawNumbers();
}
}
function autoDraw(){
drawNumbers();
}
$('.draw').click(function(){
draw($(this).data('draw'));
});
$('.autodraw').click(function(){
if(!autoDrawing){
$(this).addClass('btn-danger').removeClass('btn-default');
autoDrawing = true;
timer = setInterval(autoDraw,autoDrawSpeed);
}
else{
clearTimeout(timer);
autoDrawing = false;
$(this).addClass('btn-default').removeClass('btn-danger');
}
});
function reset(){
// Results Scope Reference
var resultsScope = angular.element(document.getElementById('results')).scope();
// Stats Scope Reference
var statsScope = angular.element(document.getElementById('stats')).scope();
// Reset Draw Results
for(var i=0; i<resultsScope.results.length; i++){
resultsScope.results[i].value = '0';
console.log(resultsScope.results[i].value);
}
// Reset Draw count
statsScope.$apply(function() {
statsScope.totalWinningDraws = 0;
statsScope.totalDraws = 0;
});
}
$('.reset').click(function(){
reset();
clearTimeout(timer);
$('.autodraw').addClass('btn-default').removeClass('btn-danger');
autoDrawing = false;
});
Output
300px
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |