在圆环上生成随机点位置

时间:2018-07-31 19:23:02

标签: python random plot

我正在编写代码来模拟粒子在圆环表面上的传播。最初,粒子聚集在“局部”空间上,如下图所示:

Initial particles on torus

蓝点是初始粒子。问题是,当我放大时,粒子似乎不会随机散布:

Zoom in

首先,我看到它们的形状像原始的。而且,我正在处理N = 5个粒子,但是这里似乎有25个粒子(5个原始数)。我猜想它来自25 = 5 ^ 2的meshgrid(),但说实话我真的不明白该函数的工作原理。

这是我的代码:

创建红色圆环:

##! Core script support for logging syslog messages.  This script represents 
##! one syslog message as one logged record.

@load ./consts
@load base/protocols/ssh

module Syslog;

export {
        redef enum Log::ID += { LOG };

        ## The record type which contains the fields of the syslog log.
        type Info: record {
                ## Timestamp when the syslog message was seen.
                ts:        time            &log;
                ## Unique ID for the connection.
                uid:       string          &log;
                ## The connection's 4-tuple of endpoint addresses/ports.
                id:        conn_id         &log;
                ## Protocol over which the message was seen.
                proto:     transport_proto &log;
                ## Syslog facility for the message.
                facility:  string          &log;
                ## Syslog severity for the message.
                severity:  string          &log;
                ## The plain text message.
                message:   string          &log;
        };
}

redef record connection += {
        syslog: Info &optional;
};

const ports = { 514/udp };
redef likely_server_ports += { ports };

event bro_init() &priority=5
        {
        Log::create_stream(Syslog::LOG, [$columns=Info, $path="syslog"]);
        Analyzer::register_for_ports(Analyzer::ANALYZER_SYSLOG, ports);
        }
# Added
module SSH;
event ssh_fail()
        {
        local c: SSH::Info;
        local t: record {
                ts:              time         &log;
                uid:             string       &log;
                id:              conn_id      &log;
                version:         count        &log;
                auth_success:    bool         &log &optional;
                auth_attempts:   count        &log &optional;
                direction:       Direction    &log &optional;
                client:          string       &log &optional;
                server:          string       &log &optional;
                cipher_alg:      string       &log &optional;
                mac_alg:         string       &log &optional;
                compression_alg: string       &log &optional;
                kex_alg:         string       &log &optional;
                host_key_alg:    string       &log &optional;
                host_key:        string       &log &optional;
        };
        local p: connection;
        #event log_ssh(c);
        event ssh_auth_failed(p);
        return;
        }


module Syslog;

event syslog_message(c: connection, facility: count, severity: count, msg: string) &priority=5
        {
        local info: Info;
        info$ts=network_time();
        info$uid=c$uid;
        info$id=c$id;
        info$proto=get_port_transport_proto(c$id$resp_p);
        info$facility=facility_codes[facility];
        info$severity=severity_codes[severity];
        info$message=msg;

        #if (info$facility=="AUTHPRIV" && info$severity=="ERR"){
        #       event ssh_fail();
        #}
        c$syslog = info;
        }

# Added  
const logCount= 0&redef;
function logUp(i: count): count
        {
        local Up = i+1;
        return Up;
        }

event syslog_message(c: connection, facility: count, severity: count, msg: string) &priority=-5
        {
        local info: Info;
        #local logCount = 0;
        Log::write(Syslog::LOG, c$syslog);
        # More Changes below
        if (info$facility=="AUTHPRIV" && info$severity=="ERR"){
                event ssh_fail();
        }
        #Log::write(Syslog::LOG, c$syslog);
        }

放置初始点:

angle = np.linspace(0, 2*np.pi, 32)
theta, phi = np.meshgrid(angle, angle)
X = (R + r * np.cos(phi)) * np.cos(theta)
Y = (R + r * np.cos(phi)) * np.sin(theta)  
Z = r * np.sin(phi)

其中N是粒子数,r,R分别是圆环的短半径和长半径。

0 个答案:

没有答案