2022/11,江端さんの技術メモ

以前、

円周内の一様乱数

から、乱数の生成を作ることができました。

現在、斜め45度くらいに述びた街の位置情報を乱数で作る為に、楕円周内の一様乱数を調べていたのですが、見つけられていません。

累積密度関数が一様になるように計算式を作れば良い、ということは分かったのですが、そんなの面倒くさくてやっていられません。

ふと思ったのですが、円周内の一様乱数ではθとr を使って、乱数を使っていて、この場合、r=sqrt(乱数)を使っているのだから、θの値に応じた新しいr'を作ってそのまま放り込んでやればいいのでは、と思いつきました。

面倒なので、x軸方向の長さは1.0として、y軸方向の長さをbとすれば、

x=cosθ 、 y=b sinθ となるので、r'= sqrt(x^2+y^2) に放り込むだけ、上記の円周内の一様乱数と同じやり方でできるんじゃないの、と考えて、エクセルで試しました。ここではb=0.5にしています。

結論:上手くいきませんでした。

もう面倒くさくなったので、r' に sqrt(0~1)の乱数を使って、x=cosθ 、 y=b sinθ に乗算するだめの「なんちゃって楕円内の一様乱数」 を作って対応しました。

こんな感じです。

// 住民の居住区を計算
		shita := 2.0 * 3.141592654 * rand.Float64()
		x := 0.03296 * math.Cos(shita)
		y := 0.01893 * math.Sin(shita)
		r := math.Sqrt(rand.Float64())
		rx := r * x
		ry := r * y
		// 45度回転 + 基本座標
		x_map := 1.0/math.Sqrt(2.0)*(rx-ry) + 131.46231887576513
		y_map := 1.0/math.Sqrt(2.0)*(rx+ry) + 34.171317284454766

「ここは主戦場でなない」と腹を括って、逃げるのも、エンジニアには必須の技量です。

2022/10,江端さんの技術メモ

論文購読発表の準備をしていますが、このSEMというのがなかなか面白そうで、今、調べています、

「動かして理解する」が私の信条ですので、"R"と、"RStudio"をインストールして、

井出草平の研究ノート

を参考にして勉強させて頂いております。

install.packages("lavaan")
install.packages("semPlot")
In install.packages("XML") :
   パッケージ 'XML' のインストールは、ゼロでない終了値をもちました

→ が、上手くいかないなぁ

エラーメッセージは、

make: *** [C:/PROGRA~1/R/R-42~1.1/etc/x64/Makeconf:253: DocParse.o] Error 1
ERROR: compilation failed for package 'XML'
* removing 'C:/Users/ebata/AppData/Local/R/win-library/4.2/XML'
Warning in install.packages :
パッケージ ‘XML’ のインストールは、ゼロでない終了値をもちました

ですね。
MSYS2から、pacmanで libxml2-devel のインストールを試みています。

(ここまで)

$ pip install --upgrade pip

install.packages("XML", type = "binary") # これで上手くいった

以下、メモ

install.packages("AER")
install.packages("memisc")

library(lavaan) #lavaanパッケージの読み込み
library(AER) #AERパッケージの読み込み。
data(CPS1985) #データCPS1985の読み込み


2022/10,江端さんの技術メモ

変数や構造体などを一箇所に集めておいて、ソースコードから、#include "include.h" みたいに使うのは、Cの定番ですが、これだけのことをGoでやりたいだけなのに、酷く苦労しました。

大切なのは、ソースコードと違う場所に、そのインクルードファイルみたいなものを置きたい(×ソースコードの配下のディレクトリ)でなく、複数のgoのプロジェクトから共通して使いたい。

まあ、こんな感じです。

(人生最初のアイビスペイント+iPadの手書きです)

ソースファイルは、こんな感じです。

include.go

package include // この名前が、mail.goで使われるので覚えておいて下さい

type Person struct {  //  先頭大文字
	FirstName string // 先頭大文字 
	Age       int // 先頭大文字
}

main.go (これは、src,src2の両方で使っています)

package main

import (
	"fmt"
	"m/include"
)

func main() {
	var mike include.Person  // この "include.Person"という変数名が特徴です
	mike.FirstName = "Mike" // あとは構造体の属性を持ってくるだけ(先頭大文字を忘れないように)
	mike.Age = 20           // 同上
	fmt.Println(mike.FirstName, mike.Age) //=> Mike 20
}

で、ここからが重要なんですが、例えばsrcディレクトリの中で実行すると

PS C:\Users\ebata\dummy\go_test2\src> go run .
go: cannot find main module, but found .git/config in C:\Users\ebata
to create a module there, run:
cd ..\..\.. && go mod init

てなことを言われますので、include, src, src2の上のディレクトリで、

go mod init m // "m"でも、"mm"でも、"mmm"でも、かまわん

を実行すると、go.modができます。中身はこれだけです。

go.mod の中に、includeが書き込まれているとか、そういうことはないようです(どうなっているか分かりません)が、とりあえずsrcに移動して、main.goが動きました。

2022/10,江端さんの技術メモ

エクセルのコラムはこんな感じ

θ: RAND()*2*3.141592654

r: SQRT(RAND())

X: +B3*COS(A3)

Y: +B3*SIN(A3)

https://qiita.com/aa_debdeb/items/e416ae8a018692fc07eb

2022/10,江端さんの技術メモ

映像の切り出しをするだけなら、aviutl(現在立ち上げ不調) ではなく avidemux を試してみなさい > 私

2022/10,江端さんの技術メモ

ホストのPCでは"No"を選択

"No"を押した後の情報をメモっておく

クライアントPCの方は"yes"を選択する。

ホストの方で示された情報を入力する。

うーん、ラクチン。

 

2022/10,江端さんの技術メモ

あが

Golangのファイルを分割して使いたい

の方法が上手く動かない。

$ tree
.
├── Agent
│   ├── cert.pem
│   ├── go.mod
│   ├── go.sum
│   ├── key.pem
│   └── main.go
├── join
│   ├── cert.pem
│   ├── join.exe
│   ├── join.go
│   └── key.pem
└── ldarp
    └── libdarp.go

のAgent/main.go と、join/join.goの中で、ldap/libdarp.goを使いたいんだけど、

import (
	"m/ldarp"
)

を、

import (
	"m/../ldarp"
)

とか

import (
	"m/./../ldarp"
)

とか試したみたんだけど、ダメ。

エラーコードに記載されているように、大人しく、
join.go:13:2: package m/ldarp is not in GOROOT (c:\go\src\m\ldarp)
のところに作れば動くんだろうけど、『負けたような気がする』ので、Agent/main.go と、join/join.goの中に、ldap/libdarp.goを埋めこむことで対応した。

ライブラリの二重管理になるけど、まあいいかな、と。