Initial commit
This commit is contained in:
commit
5d2dd7db43
6 changed files with 126 additions and 0 deletions
47
.gitignore
vendored
Normal file
47
.gitignore
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
out/
|
||||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
bin/
|
||||
!**/src/main/**/bin/
|
||||
!**/src/test/**/bin/
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
|
||||
### Scala ###
|
||||
.bsp/
|
26
LICENSE
Normal file
26
LICENSE
Normal file
|
@ -0,0 +1,26 @@
|
|||
GLWTS(Good Luck With That Shit) Public License
|
||||
Copyright (c) Every-fucking-one, except the Author
|
||||
|
||||
Everyone is permitted to copy, distribute, modify, merge, sell, publish,
|
||||
sublicense or whatever the fuck they want with this software but at their
|
||||
OWN RISK.
|
||||
|
||||
Preamble
|
||||
|
||||
The author has absolutely no fucking clue what the code in this project
|
||||
does. It might just fucking work or not, there is no third option.
|
||||
|
||||
|
||||
GOOD LUCK WITH THAT SHIT PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION
|
||||
|
||||
0. You just DO WHATEVER THE FUCK YOU WANT TO as long as you NEVER LEAVE
|
||||
A FUCKING TRACE TO TRACK THE AUTHOR of the original product to blame for
|
||||
or hold responsible.
|
||||
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Good luck and Godspeed.
|
14
build.sbt
Normal file
14
build.sbt
Normal file
|
@ -0,0 +1,14 @@
|
|||
ThisBuild / version := "0.1.0"
|
||||
ThisBuild / organization := "top.davidon"
|
||||
ThisBuild / licenses ++= Seq(
|
||||
"GLWTS" -> url("https://github.com/me-shaon/GLWTPL/blob/master/NSFW_LICENSE"),
|
||||
)
|
||||
|
||||
ThisBuild / scalaVersion := "3.5.1"
|
||||
|
||||
|
||||
lazy val root = (project in file("."))
|
||||
.settings(
|
||||
name := "monteCarlo",
|
||||
assembly / mainClass := Some("top.davidon.montecarlo.main.Main"),
|
||||
)
|
1
project/build.properties
Normal file
1
project/build.properties
Normal file
|
@ -0,0 +1 @@
|
|||
sbt.version = 1.10.2
|
1
project/plugins.sbt
Normal file
1
project/plugins.sbt
Normal file
|
@ -0,0 +1 @@
|
|||
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.2.0")
|
37
src/main/scala/top/davidon/montecarlo/main/Main.scala
Normal file
37
src/main/scala/top/davidon/montecarlo/main/Main.scala
Normal file
|
@ -0,0 +1,37 @@
|
|||
package top.davidon.montecarlo.main
|
||||
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
import scala.concurrent.Future
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
|
||||
@main def main(iterCount: Long, batchSize: Int): Unit = {
|
||||
MonteCarlo(iterCount, batchSize)
|
||||
}
|
||||
|
||||
class MonteCarlo(var iterCount: Long, val batchSize: Int) {
|
||||
var sp = AtomicLong(0L)
|
||||
var cp = AtomicLong(0L)
|
||||
|
||||
{
|
||||
while iterCount > 0 do {
|
||||
val bs = if (iterCount < batchSize) iterCount.toInt else batchSize
|
||||
val futures = for (i <- 0 until bs) yield calc()
|
||||
Future.sequence(futures).map(_ => ())
|
||||
iterCount -= bs
|
||||
println(s"iterCount = $iterCount")
|
||||
}
|
||||
val pi = (4.0*cp.get())/sp.get()
|
||||
println(s"pi = $pi")
|
||||
}
|
||||
|
||||
def calc(): Future[Unit] = Future {
|
||||
val px = Math.random()*2-1
|
||||
val py = Math.random()*2-1
|
||||
|
||||
val d = px*px + py*py
|
||||
if (d < 1) {
|
||||
cp.addAndGet(1)
|
||||
}
|
||||
sp.addAndGet(1)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue